Skip to main content
Glama

gmail.users.drafts.list

Lists drafts in a user's Gmail mailbox, with optional search query and pagination, so you can review saved draft emails before sending.

Instructions

Lists the drafts in the user's mailbox. For more information, see Create and send draft emails [HTTP GET]. Returns the requested resource as JSON — request bodies are built from the typed parameters (typed flags win over the params map), or read whole from body_file Siblings over the same resource: create, delete, get, send, update.

Input Schema

NameRequiredDescriptionDefault
qNo[query parameter] Only return draft messages matching the specified query. Supports the same query format as the Gmail search box. For example, `"from:someuser@example.com rfc822
queryNoExtra KEY=VALUE query pairs for endpoints whose parameters Discovery does not describe.
paramsNoParameter map merged into the request; typed parameters win.
userIdYes[URL path segment] The user's email address. The special value `me` can be used to indicate the authenticated user.me
dry_runNoReturn the request that would be sent, without sending it.
body_fileNoRead the request body from this file ('-' for stdin) instead of building one from the parameters.
pageTokenNo[query parameter] Page token to retrieve a specific page of results in the list.
maxResultsNo[query parameter] Maximum number of drafts to return. This field defaults to 100. The maximum allowed value for this field is 500.100
includeSpamTrashNo[query parameter] Include drafts from `SPAM` and `TRASH` in the results.false

Output Schema

NameRequiredDescriptionDefault
draftsNo
nextPageTokenNo
resultSizeEstimateNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • addedInput schema / properties / includeSpamTrash / default
      Added value: +"false"
    • changedInput schema / properties / includeSpamTrash / description
      Previous value: -"Include drafts from `SPAM` and `TRASH` in the results."New value: +"[query parameter] Include drafts from `SPAM` and `TRASH` in the results."
    • addedInput schema / properties / maxResults / default
      Added value: +"100"
    • changedInput schema / properties / maxResults / description
      Previous value: -"Maximum number of drafts to return. This field defaults to 100. The maximum allowed value for this field is 500."New value: +"[query parameter] Maximum number of drafts to return. This field defaults to 100. The maximum allowed value for this field is 500."
    • addedInput schema / properties / maxResults / format
      Added value: +"uint32"
    • changedInput schema / properties / pageToken / description
      Previous value: -"Page token to retrieve a specific page of results in the list."New value: +"[query parameter] Page token to retrieve a specific page of results in the list."
    • changedInput schema / properties / q / description
      Previous value: -"Only return draft messages matching the specified query. Supports the same query format as the Gmail search box. For example, `\"from:someuser@example.com rfc822"New value: +"[query parameter] Only return draft messages matching the specified query. Supports the same query format as the Gmail search box. For example, `\"from:someuser@example.com rfc822"
    • addedInput schema / properties / userId / default
      Added value: +"me"
    • changedInput schema / properties / userId / description
      Previous value: -"The user's email address. The special value `me` can be used to indicate the authenticated user."New value: +"[URL path segment] The user's email address. The special value `me` can be used to indicate the authenticated user."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "drafts": {
      +      "items": {
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "message": {
      +            "properties": {
      +              "classificationLabelValues": {
      +                "items": {
      +                  "properties": {
      +                    "fields": {
      +                      "items": {
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "labelId": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "historyId": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "internalDate": {
      +                "type": "string"
      +              },
      +              "labelIds": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "payload": {
      +                "properties": {
      +                  "body": {
      +                    "type": "object"
      +                  },
      +                  "filename": {
      +                    "type": "string"
      +                  },
      +                  "headers": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "mimeType": {
      +                    "type": "string"
      +                  },
      +                  "partId": {
      +                    "type": "string"
      +                  },
      +                  "parts": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "raw": {
      +                "type": "string"
      +              },
      +              "sizeEstimate": {
      +                "type": "integer"
      +              },
      +              "snippet": {
      +                "type": "string"
      +              },
      +              "threadId": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "nextPageToken": {
      +      "type": "string"
      +    },
      +    "resultSizeEstimate": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does carry the safety burden, and it does disclose the HTTP GET verb and that results come back as JSON. However, the bulk of the behavioral text ('request bodies are built from the typed parameters... or read whole from body_file') is generic wrapper boilerplate that is irrelevant to a bodyless GET and adds noise rather than insight. Nothing is said about pagination via nextPageToken or the fact that returned drafts are lightweight id/threadId stubs unless further fetched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose statement is correctly front-loaded in the first sentence, but the middle sentence about typed flags, params maps and body_file is boilerplate that does not earn its place on a GET list tool. The trailing sibling enumeration is a terse fragment rather than a structured sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required, and the schema fully documents the 9 parameters. For a simple read-only list endpoint the description covers the essentials; the main remaining gap is pagination guidance (how to page through large draft lists), which is a minor omission rather than a blocker.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: q, maxResults, pageToken, includeSpamTrash and userId are all documented in the schema, so the baseline of 3 applies. The description adds no parameter meaning beyond the schema and never mentions the filter/paging options it accepts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource ('Lists the drafts in the user's mailbox'), which clearly separates this from the message/thread listing tools. It also enumerates the sibling draft operations (create, delete, get, send, update) so an agent can see this is the read-only list member of the drafts family. It stops short of a 5 because the sibling mention is a bare enumeration with no criteria distinguishing them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this over gmail.users.messages.list or gmail.users.threads.list, nor when to use the q/includeSpamTrash filters. The only guidance is the implicit 'it lists drafts' plus a link to an unrelated draft-creation guide, which does not help tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools