Gmail
Gmail is Google's cloud based email service that allows you to access your messages from any computer or device with just a web browser.
Gmail is Google’s cloud based email service that allows you to access your messages from any computer or device with just a web browser.
Supports authentication: OAuth 2.0
Set up the agent connector
Section titled “Set up the agent connector”Register your Scalekit environment with the Gmail connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:
-
Set up auth redirects
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Find Gmail and click Create.
-
Click Use your own credentials and copy the redirect URI. It looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.
-
Navigate to Google Cloud Console → APIs & Services → Credentials. Click + Create Credentials, then OAuth client ID. Choose Web application as the application type.

-
Under Authorized redirect URIs, click + Add URI, paste the redirect URI, and click Create.

-
-
Enable Gmail API
-
In Google Cloud Console, go to APIs & Services → Library. Search for “Gmail API” and click Enable.

-
-
Get client credentials
Google provides your Client ID and Client Secret after you create the OAuth client ID in step 1.
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Connections and open the connection you created.
-
Enter your credentials:
- Client ID (from above)
- Client Secret (from above)
- Permissions (scopes beginning with
gmail— see Google API Scopes reference)

-
Click Save.
-
Connect a user’s Gmail account and make API calls on their behalf — Scalekit handles OAuth and token management automatically.
You can interact with Gmail in two ways — via direct proxy API calls or via Scalekit optimized tool calls. Scroll down to see the list of available Scalekit tools.
Proxy API Calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'gmail'; // get your connection name from connection configurationsconst identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsconst scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// Authenticate the userconst { link } = await actions.getAuthorizationLink({ connectionName, identifier,});console.log('🔗 Authorize Gmail:', link); // present this link to your user for authorization, or click it yourself for testingprocess.stdout.write('Press Enter after authorizing...');await new Promise(r => process.stdin.once('data', r));
// Make a request via Scalekit proxyconst result = await actions.request({ connectionName, identifier, path: '/gmail/v1/users/me/profile', method: 'GET',});console.log(result);import scalekit.client, osfrom dotenv import load_dotenvload_dotenv()
connection_name = "gmail" # get your connection name from connection configurationsidentifier = "user_123" # your unique user identifier
# Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsscalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# Authenticate the userlink_response = actions.get_authorization_link( connection_name=connection_name, identifier=identifier)# present this link to your user for authorization, or click it yourself for testingprint("🔗 Authorize Gmail:", link_response.link)input("Press Enter after authorizing...")
# Make a request via Scalekit proxyresult = actions.request( connection_name=connection_name, identifier=identifier, path="/gmail/v1/users/me/profile", method="GET")print(result)Scalekit Tools
Tool list
Section titled “Tool list”gmail_fetch_mails
Section titled “gmail_fetch_mails”Fetch emails from a connected Gmail account using search filters. Requires a valid Gmail OAuth2 connection.
| Name | Type | Required | Description |
|---|---|---|---|
format | string | No | Format of the returned message. |
include_spam_trash | boolean | No | Whether to fetch emails from spam and trash folders |
label_ids | array<string> | No | Gmail label IDs to filter messages |
max_results | integer | No | Maximum number of emails to fetch |
page_token | string | No | Page token for pagination |
query | string | No | Search query string using Gmail’s search syntax (e.g., ‘is:unread from:user@example.com’) |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_get_attachment_by_id
Section titled “gmail_get_attachment_by_id”Retrieve a specific attachment from a Gmail message using the message ID and attachment ID.
| Name | Type | Required | Description |
|---|---|---|---|
attachment_id | string | Yes | Unique Gmail attachment ID |
file_name | string | No | Preferred filename to use when saving/returning the attachment |
message_id | string | Yes | Unique Gmail message ID that contains the attachment |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_get_contacts
Section titled “gmail_get_contacts”Fetch a list of contacts from the connected Gmail account. Supports pagination and field filtering.
| Name | Type | Required | Description |
|---|---|---|---|
max_results | integer | No | Maximum number of contacts to fetch |
page_token | string | No | Token to retrieve the next page of results |
person_fields | array<string> | No | Fields to include for each person |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_get_message_by_id
Section titled “gmail_get_message_by_id”Retrieve a specific Gmail message using its message ID. Optionally control the format of the returned data.
| Name | Type | Required | Description |
|---|---|---|---|
format | string | No | Format of the returned message. |
message_id | string | Yes | Unique Gmail message ID |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_get_thread_by_id
Section titled “gmail_get_thread_by_id”Retrieve a specific Gmail thread by thread ID. Optionally control message format and metadata headers. Requires a valid Gmail OAuth2 connection with read access.
| Name | Type | Required | Description |
|---|---|---|---|
format | string | No | Format of messages in the returned thread. |
metadata_headers | array<string> | No | Specific email headers to include when format is metadata |
schema_version | string | No | Optional schema version to use for tool execution |
thread_id | string | Yes | Unique Gmail thread ID |
tool_version | string | No | Optional tool version to use for execution |
gmail_list_drafts
Section titled “gmail_list_drafts”List draft emails from a connected Gmail account. Requires a valid Gmail OAuth2 connection.
| Name | Type | Required | Description |
|---|---|---|---|
max_results | integer | No | Maximum number of drafts to fetch |
page_token | string | No | Page token for pagination |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_list_threads
Section titled “gmail_list_threads”List threads in a connected Gmail account using optional search and label filters. Requires a valid Gmail OAuth2 connection with read access.
| Name | Type | Required | Description |
|---|---|---|---|
include_spam_trash | boolean | No | Whether to include threads from Spam and Trash |
label_ids | array<string> | No | Gmail label IDs to filter threads (threads must match all labels) |
max_results | integer | No | Maximum number of threads to return |
page_token | string | No | Page token for pagination |
query | string | No | Search query string using Gmail search syntax (for example, ‘is:unread from:user@example.com’) |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |
gmail_search_people
Section titled “gmail_search_people”Search people or contacts in the connected Google account using a query. Requires a valid Google OAuth2 connection with People API scopes.
| Name | Type | Required | Description |
|---|---|---|---|
other_contacts | boolean | No | Whether to include people not in the user’s contacts (from ‘Other Contacts’). |
page_size | integer | No | Maximum number of people to return. |
person_fields | array<string> | No | Fields to retrieve for each person. |
query | string | Yes | Text query to search people (e.g., name, email address). |
schema_version | string | No | Optional schema version to use for tool execution |
tool_version | string | No | Optional tool version to use for execution |