Skip to main content
Glama

hermes-google

MCP server giving Hermes (Claude Code running as a personal assistant) scoped access to Gmail, Google Calendar, and Google Drive through a dedicated Hermes Google account — without granting access to your personal Google account.

See docs/superpowers/specs/2026-04-23-hermes-google-design.md for the full design.

Quick Start

Add hermes-google to your project's .mcp.json:

{
  "mcpServers": {
    "hermes-google": {
      "type": "stdio",
      "command": "uvx",
      "args": ["hermes-google-mcp@latest"]
    }
  }
}

Related MCP server: gmail-drive-mcp-server

Google Account Setup

  1. Sign up for a plain Gmail account (e.g., hermes-yourname@gmail.com)

  2. In Google Cloud Console: create a project, enable the Gmail, Calendar, and Drive APIs

  3. Create an OAuth 2.0 Client ID (type: Desktop application) and download the client secret JSON

  4. Save it as ~/.config/hermes-google/oauth_client.json

  5. Run the setup script:

git clone https://github.com/jimmy-larsson/hermes-google.git
cd hermes-google
./scripts/setup.sh

The setup script creates the config, runs the OAuth flow (saving the token to ~/.config/hermes-google/token.json), and prints the remaining manual steps.

Host-Side OAuth

The OAuth flow opens a browser for consent — it must run on your host machine, not inside a headless container.

If your config and credentials live inside a container (e.g. Docker-mounted ~/.config/hermes-google/), you need to:

  1. Copy config.toml and oauth_client.json to the host filesystem at ~/.config/hermes-google/

  2. Run the OAuth flow from the host:

    uvx hermes-google-mcp@latest auth login
  3. The resulting token.json is saved on the host — it will be picked up by the container through the volume mount

Gmail Setup

Create filters in your personal Gmail to route emails to the Hermes account:

  1. For each sender you want Hermes to handle: create a filter that both labels the email (e.g. hermes-review) and forwards it to hermes-yourname@gmail.com — in a single filter

  2. For replies from Hermes: from:hermes-yourname@gmail.com → apply label hermes

Gotchas

  • Filters don't chain. Gmail evaluates all filters in a single pass against the original message properties. A label applied by filter A will not trigger filter B that matches on that label. You must combine label + forward into one filter per sender/criteria.

  • "Apply to existing" skips forwarding. When you click "Also apply filter to matching conversations", Gmail only runs local actions (label, archive, star). Forwarding only fires on new incoming messages.

Calendar & Drive Setup

  • Calendar: Share your calendar with the Hermes account at "Make changes to events" permission level. Set [user].calendar_id in config.toml.

  • Drive: Share specific files/folders with the Hermes account. Optionally set [drive].default_parent_folder_id in config.toml for a default upload folder.

Usage

Once installed, the following tools are available to Hermes in every session:

  • mail_list_pending, mail_search, mail_get, mail_send_draft, mail_mark_read, mail_archive

  • cal_list_calendars, cal_list_events, cal_create_event, cal_update_event, cal_delete_event

  • drive_search, drive_list, drive_get, drive_upload, drive_update, drive_move, drive_delete

  • auth_status

All write operations require user confirmation. mail_send_draft is structurally restricted to your own email; it cannot send to external recipients.

Debug CLI

Same operations via shell:

hermes-google auth status
hermes-google mail list --limit 10
hermes-google mail get <message_id>
hermes-google cal list --start 2026-04-24T00:00:00+09:00 --end 2026-04-25T00:00:00+09:00
hermes-google drive search "Q1 report"

Revocation

Any one of these fully cuts an integration surface:

  • Delete the forwarding filter in your personal Gmail

  • Unshare your calendar with the Hermes account

  • Unshare a Drive file or folder

  • hermes-google auth revoke — removes the refresh token locally

  • claude mcp remove hermes-google — Hermes loses the tools; Google data untouched

  • Delete the Hermes Google account entirely

Development

conda activate hermes-google
pytest
ruff check src tests

Releasing

# 1. Bump version in pyproject.toml, commit and push
git commit -am "chore: bump version to X.Y.Z"
git push

# 2. Tag locally and push — triggers the CI pipeline
git tag X.Y.Z
git push origin X.Y.Z

# 3. After CI passes, create the GitHub release
gh release create X.Y.Z --verify-tag --generate-notes

Alternative Install Methods

# User scope — available in all your projects
claude mcp add -s user hermes-google -- uvx hermes-google-mcp

# Local scope — private to you in this project only
claude mcp add hermes-google -- uvx hermes-google-mcp

Available Tools

19 tools
auth_statusA
Read-only

Report whether stored credentials are valid and loaded.

Returns dict with keys: valid (bool), expired (bool), scopes (list of granted OAuth scope URLs), and — only on failure — error (string describing the auth or config problem).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes beyond annotations (readOnlyHint, destructiveHint) by detailing the actual returned keys (valid, expired, scopes, error) and conditions (error only on failure). No contradictions.

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

Conciseness5/5

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

The description is very concise (two sentences) and well-structured, with key information front-loaded and return keys listed clearly.

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

Completeness5/5

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

Given no parameters, good annotations, and a detailed output description, the tool definition is fully complete. The output schema is implied but covered by the description.

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

Parameters5/5

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

No parameters exist, but the description adds significant value by explaining the return value structure in detail. This compensates fully for the lack of parameters.

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

Purpose5/5

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

The description explicitly states the tool's purpose: 'Report whether stored credentials are valid and loaded.' It then details the return dictionary with keys, which clearly distinguishes it from sibling tools that perform CRUD operations on calendars, drives, and mail.

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

Usage Guidelines4/5

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

The description implies usage for checking auth status before other operations but does not give explicit when-to-use or when-not-to-use guidance. However, the context (sibling tools are resource-specific) makes the use case clear.

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

cal_create_eventA

Create a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID. start and end must be RFC 3339 datetimes with timezone offset.

Returns dict with key: id (created event ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
titleYes
calendarYes
attendeesNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description adds important behavioral context beyond annotations by noting the need for user confirmation and describing the return value (dict with 'id'). Annotations do not contradict; destructiveHint=false aligns with creation.

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

Conciseness5/5

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

The description is very concise, consisting of 5 short lines. It front-loads the purpose and important note, with every sentence adding value.

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?

The description covers the key parameters and return value reasonably well. Minor gaps remain in explaining `title` and optional parameters, but given the tool's simplicity and existence of an output schema, it is fairly complete.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by explaining `calendar` acceptable values and `start`/`end` format. However, it does not describe `title`, `attendees`, or `description`, leaving some gaps.

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

Purpose5/5

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

The description clearly states 'Create a calendar event.' This is a specific verb and resource, and it distinguishes this tool from siblings like cal_update_event and cal_delete_event.

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

Usage Guidelines4/5

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

The description explicitly says 'Requires user confirmation before calling.' and provides formatting instructions for `start` and `end`. It does not explicitly mention when not to use or alternatives, but the context is clear.

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

cal_delete_eventA
Destructive

Delete a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID.

Returns dict with key: id (deleted event ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarYes
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint: true. The description adds the important behavioral trait of requiring user confirmation, which goes beyond the annotation. It also describes the return value, but does not disclose error handling or side effects.

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

Conciseness5/5

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

The description is concise with three sentences covering purpose, parameter guidance, and return value. No redundant information, well-structured.

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?

Given the tool's complexity (2 params, output schema), the description is mostly complete. It covers the return value and parameter specifics for calendar, but omits handling of non-existent events or authorization requirements. Still, it is adequate for most use cases.

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?

With 0% schema description coverage, the description must compensate. It partially explains the `calendar` parameter (accepts 'user', 'hermes', or full ID), but leaves `event_id` unexplained. This is insufficient for a low-coverage scenario.

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

Purpose5/5

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

The description clearly states 'Delete a calendar event' with a specific verb and resource. It distinguishes from sibling tools like cal_create_event and cal_update_event by focusing on deletion.

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

Usage Guidelines4/5

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

The description explicitly mentions 'Requires user confirmation before calling,' providing a clear usage guideline. It also explains the `calendar` parameter values, but lacks guidance on prerequisites like event existence or permissions.

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

cal_list_calendarsA
Read-only

List all calendars visible to Hermes (own calendar + any shared with Hermes).

Returns a list of dicts, each with keys: id (calendar ID), summary (display name), access_role (e.g., 'owner', 'writer', 'reader').

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark it as read-only and non-destructive. The description adds the exact return structure (list of dicts with keys: id, summary, access_role), which goes beyond annotations to clarify output behavior.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action, no extraneous words. Every sentence adds value.

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

Completeness5/5

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

With zero parameters, full annotations, and an output schema (implied by context), the description is complete. It describes the return format and scope, leaving no gaps.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. The description does not need to explain parameters; it adds no extra param info, which is appropriate given the baseline of 4 for zero parameters.

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

Purpose5/5

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

The description clearly states 'List all calendars visible to Hermes', specifying the verb (list) and resource (calendars) with scope (own + shared). This distinguishes it from sibling tools that handle events, drive, mail, or auth.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives or when not to use it. The use case is implied by the purpose, but lacking exclusions or context, it gets a moderate score.

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

cal_list_eventsA
Read-only

List events in a calendar within a time range, sorted chronologically.

calendar accepts 'user' (your personal calendar), 'hermes' (Hermes's primary calendar), or a full Google Calendar ID.

start and end must be RFC 3339 datetimes with timezone offset (e.g., '2026-04-24T00:00:00+08:00'). Bare dates are rejected by the API.

Returns a list of dicts, each with keys: id, title, start, end, attendees (list of email strings).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
calendarYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds value by specifying the return format (list of dicts with keys) and input constraints (RFC 3339 datetimes, rejection of bare dates), which are beyond the annotations.

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

Conciseness5/5

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

The description is front-loaded with the purpose, then explains each parameter in a structured manner. No redundant sentences; every sentence provides essential information efficiently.

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

Completeness5/5

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

Given the moderate complexity of the tool (3 required parameters, no nested objects) and the presence of an output schema (return format explained in description), the description covers all necessary aspects: input format, valid values, and output structure.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by detailing acceptable values for 'calendar' (user, hermes, full ID) and exact format for 'start' and 'end' (RFC 3339 with timezone offset, rejecting bare dates). This adds significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists events in a calendar within a time range, sorted chronologically. This specific verb+resource combination distinguishes it from siblings like cal_create_event or cal_delete_event.

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

Usage Guidelines4/5

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

The description provides clear context for using the tool (time range, accepted calendar IDs, required datetime format) but does not explicitly contrast with alternatives or state when not to use it. The purpose is clear from the name and context.

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

cal_update_eventA
Idempotent

Patch specific fields of a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID. fields is a dict of Google Calendar event fields to update (e.g., {"summary": "New title", "location": "Room 3"}).

Returns dict with key: id (updated event ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
calendarYes
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as idempotent and non-destructive. The description adds the critical behavioral trait 'Requires user confirmation before calling', which is not covered by annotations. It also explains the return structure. This is good supplementary context.

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

Conciseness5/5

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

The description is concise, with a clear primary sentence followed by brief parameter explanations. No redundant information. Every sentence serves a purpose.

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

Completeness5/5

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

Given the presence of an output schema (mentioned), the description adequately covers the return format (dict with 'id'). It addresses key usage constraints (user confirmation, calendar ID format) and provides an example for the fields parameter. No critical gaps.

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

Parameters4/5

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

Schema description coverage is 0%. The description provides meaning for 'calendar' (accepted values: 'user', 'hermes', or full Google Calendar ID) and 'fields' (dict of event fields with example). 'event_id' is not described but it is a straightforward required parameter. The description adds substantial value beyond the bare schema.

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

Purpose5/5

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

The description states 'Patch specific fields of a calendar event', which clearly specifies the verb (patch) and resource (calendar event). It distinguishes from siblings like cal_create_event (create) and cal_delete_event (delete) by focusing on updating existing events.

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

Usage Guidelines4/5

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

The description implies the tool should be used for partial updates, though it does not explicitly state when to use versus alternatives. It mentions a prerequisite (user confirmation) but no explicit when-not or alternative guidance. Given no sibling for full update, it is sufficiently clear.

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

drive_deleteA
Destructive

Delete a Drive file. Requires user to have used an explicit 'delete' verb.

Returns dict with key: id (deleted Drive file ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds that the user needs an explicit 'delete' verb and that the return value is a dict with 'id'. This provides context beyond annotations.

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

Conciseness5/5

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

The description is concise: two sentences conveying purpose, requirement, and return value with no redundant information.

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

Completeness3/5

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

For a simple delete tool with one parameter and an output schema, the description is mostly adequate but lacks clarification on whether deletion is permanent or trash, and what 'explicit delete verb' entails in terms of permissions.

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

Parameters1/5

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

The input schema has 0% description coverage for the only parameter 'file_id', and the description does not elaborate on its meaning or format. This is a significant gap.

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

Purpose5/5

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

The description clearly states 'Delete a Drive file', which is a specific verb and resource. This distinguishes it from sibling tools like drive_get, drive_list, and drive_update.

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

Usage Guidelines4/5

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

It mentions a requirement: 'Requires user to have used an explicit delete verb', providing a precondition. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.

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

drive_getA
Read-only

Download a Drive file to the local cache directory.

The file is saved to ~/.cache/hermes-google/drive//. Use Claude Code's Read tool on the returned path to view the contents.

Returns dict with key: path (absolute local file path).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description aligns with annotations (readOnlyHint=true, destructiveHint=false) by describing a read operation. It adds details about file caching location and return format, which are beyond what annotations provide, enhancing transparency.

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

Conciseness5/5

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

The description is concise with three sentences, each serving a clear purpose: stating the action, explaining the cache path, and describing the return value. It is front-loaded and efficient.

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

Completeness5/5

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

Given the simple input (one parameter), strong annotations, and presence of an output schema, the description is complete. It explains the return dict with the 'path' key, fulfilling the expected information.

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?

With 0% schema description coverage, the description should explain the parameter semantics. 'file_id' is self-explanatory as a file identifier, but the description does not elaborate on its format or constraints, providing marginal added value.

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

Purpose5/5

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

The description clearly states the verb 'Download' and the resource 'a Drive file', specifying the action and target. It distinguishes from siblings like drive_list or drive_search by focusing on downloading a single file.

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

Usage Guidelines4/5

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

The description indicates the tool saves to a local cache and advises using the Read tool to view contents, providing practical usage guidance. However, it does not explicitly state when to use or avoid this tool versus alternatives, leaving some ambiguity.

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

drive_listA
Read-only

List children of a Drive folder by folder ID.

Returns a list of dicts, each with keys: id, name, mime_type.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100)
folder_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds the return format (list of dicts with specific keys), providing extra context beyond annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action, no unnecessary information. Every sentence serves a purpose.

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?

Given the presence of an output schema, the description does not need to detail return values fully. It mentions the structure but does not cover pagination or error handling, which are minor gaps.

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 50% (only 'limit' described). The description adds meaning for the required 'folder_id' parameter, but overall parameter information is minimal and does not significantly enhance the schema.

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

Purpose5/5

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

The description clearly states the action ('List children') and the resource ('Drive folder by folder ID'), and distinguishes from siblings like drive_search and drive_get.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like drive_search for searching files or drive_get for a single file. The description implies its use for listing folder contents but does not clarify when not to use it.

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

drive_moveA
Idempotent

Move a Drive file into a different parent folder. Requires user confirmation before calling.

Returns dict with key: id (moved Drive file ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
parent_folder_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate non-destructive and idempotent behavior. The description adds context about user confirmation and return value ('Returns dict with key: id'), which provides additional behavioral insight beyond annotations.

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

Conciseness4/5

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

The description is two sentences, no filler. It is front-loaded with the action and key behavioral note. Slightly more detail on parameters would be welcome, but it remains efficient.

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

Completeness3/5

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

Given the tool has two parameters and an output schema, the description covers the action and return value partially. However, parameter semantics are lacking, and the output schema is not fully described. It is adequate but not thorough.

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

Parameters2/5

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

Schema coverage is 0%, so the description should compensate, but it only mentions 'Drive file' and 'parent folder' without detailing parameter meaning (e.g., file_id format, parent_folder_id constraints). The description adds minimal semantic value for parameters.

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

Purpose5/5

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

The description states 'Move a Drive file into a different parent folder' with a specific verb and resource. It clearly distinguishes from sibling tools like drive_delete or drive_list.

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

Usage Guidelines3/5

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

The description mentions 'Requires user confirmation before calling,' which provides a usage condition. However, it does not give guidance on when not to use the tool or suggest alternative tools for similar tasks.

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

drive_updateA
Idempotent

Replace a Drive file's contents with a local file. Requires user confirmation before calling.

Returns dict with key: id (updated Drive file ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
local_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

The description adds value beyond annotations by stating the tool 'Requires user confirmation before calling,' which is a critical behavioral caveat not captured in annotations. Annotations declare destructiveHint: false and idempotentHint: true, which are consistent with the described replacement action, and the return format is clearly specified.

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

Conciseness5/5

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

The description is extremely concise—two sentences, no fluff. The first sentence captures the core action and a critical behavioral condition; the second describes the return value. Every sentence earns its place.

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?

Given the tool's simplicity (two parameters, implied output schema, and annotations), the description is largely complete. It covers the action, a key behavioral requirement, and the return format. It does not address error cases or permissions, but these are partly covered by annotations and the tool's straightforward nature.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate for parameter meaning. While the action implies that file_id is the target Drive file and local_path is the source file, no explicit parameter descriptions are provided. The names are somewhat self-explanatory, but the description does not fully compensate for the lack of schema documentation.

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

Purpose5/5

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

The description states the specific action ('Replace a Drive file's contents with a local file'), clearly identifying the verb and resource. The sibling tools include drive_upload and drive_move, so this description differentiates it as an update operation on existing file content.

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 does not provide guidance on when to use this tool vs. alternatives like drive_upload or drive_search. It lacks explicit when-to-use or when-not-to-use context, leaving the agent to infer usage from the purpose alone.

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

drive_uploadA

Upload a local file to Drive. Requires user confirmation before calling.

If folder_id is omitted, uploads to the configured default parent folder.

Returns dict with key: id (created Drive file ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
folder_idNo
local_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context such as requiring user confirmation and the default folder behavior when folder_id is omitted. While annotations (destructiveHint=false) suggest it is not destructive, the description does not contradict them and provides additional useful information.

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

Conciseness5/5

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

The description is concise with three focused sentences: purpose, condition, and return value. No unnecessary words; each sentence adds value.

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?

For a simple upload tool, the description covers key aspects: purpose, user confirmation, default folder, and return value. It lacks details on local_path and name semantics but is sufficient for typical use.

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?

The description partially compensates for the 0% schema description coverage by explaining the folder_id parameter's behavior when omitted. However, it does not add meaning for local_path or name beyond their names, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states 'Upload a local file to Drive,' which is a specific verb+resource combination. It distinguishes from sibling tools like drive_search, drive_list, and drive_delete by focusing on the upload action.

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

Usage Guidelines4/5

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

The description mentions 'Requires user confirmation before calling,' providing important usage context. However, it does not specify when not to use this tool or suggest alternatives, so it falls short of a perfect score.

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

mail_archiveA
Idempotent

Archive a message in Hermes's inbox (removes the INBOX label).

Never call without user confirmation. Returns dict with key: id (the message ID that was archived).

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations show destructiveHint=false and idempotentHint=true, but the description adds that the operation removes the INBOX label and returns a dict with 'id'. This provides behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is very concise: two sentences plus a return note. It front-loads the main purpose and adds a critical usage warning. No wasted words.

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?

For a simple tool with one parameter and an output schema, the description covers the purpose, return value, and a usage caution. It could mention parameter details, but overall is sufficient given the tool's simplicity.

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

Parameters2/5

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

With schema coverage at 0%, the description should compensate by explaining the message_id parameter, but it does not. No format, source, or details are provided beyond the schema itself.

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

Purpose5/5

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

The description clearly states the verb 'Archive' and the resource 'a message in Hermes's inbox', and explains the effect of removing the INBOX label. This distinguishes it from sibling tools like mail_mark_read or mail_search.

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

Usage Guidelines3/5

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

The description includes the warning 'Never call without user confirmation', but does not explicitly specify when to use this tool versus other mail-related sibling tools. It lacks a clear when-to/when-not-to guideline.

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

mail_getA
Read-only

Fetch a single email by ID. Unwraps forwarded messages to extract the original.

Returns dict with keys: id, thread_id, sender (the user who forwarded this message to Hermes — use as the to for replies), original_sender, original_subject, original_body (plain text), in_reply_to (Message-ID header for threading), forwarding_note (text the user wrote above the forward delimiter, or null), attachment_paths (list of local file paths in ~/.cache/hermes-google/).

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is clear. Description adds valuable behavioral detail: unwraps forwarded messages to extract original. This goes beyond annotations. No contradiction.

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

Conciseness5/5

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

Concise two-paragraph structure. First sentence states core purpose. Second paragraph lists return keys clearly. No redundant information.

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?

Given that an output schema exists (context signal), the description adequately explains the return values. However, it does not mention error handling (e.g., if ID not found). For a simple read tool, this is good but not perfect.

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

Parameters2/5

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

Schema has 0% description coverage, yet the description does not explain what message_id is (e.g., 'Gmail message ID'). While it may be obvious, the description fails to add meaning beyond the parameter name. Baseline 3 is reduced because the schema lacks descriptions and the tool description does not compensate.

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

Purpose5/5

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

Clearly states it fetches a single email by ID. Distinguishes from sibling tools like mail_search (which searches) and mail_list_pending (which lists pending). The verb 'Fetch' and resource 'email' are specific.

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

Usage Guidelines3/5

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

Implied usage: when you have an email ID and want full details. But no explicit guidance on when not to use it or alternatives. For example, could mention that mail_search is for finding emails by query.

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

mail_list_pendingA
Read-only

List unread forwarded emails in Hermes's inbox, newest first.

Returns a list of dicts, each with keys: id, thread_id, sender, subject, date, snippet.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by disclosing the return format (list of dicts with specific keys), which is beyond what annotations provide. It does not, however, mention any pagination or rate-limiting behavior.

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

Conciseness5/5

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

The description is concise: two sentences that front-load the core purpose and provide essential return structure. No unnecessary words or repetition, and every sentence adds value.

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

Completeness5/5

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

Given the tool has an output schema (as per context signals), the description's explanation of return fields is redundant but harmless. The description, combined with schema and annotations, fully specifies the tool's behavior for an AI agent to select and invoke correctly.

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 coverage is 100% for the single optional parameter 'limit', which is fully described in the schema (default, min, max). The description does not add any additional semantic information about the parameter beyond what the schema already conveys.

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

Purpose5/5

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

The description clearly states the tool lists unread forwarded emails in Hermes's inbox, sorted newest first. It uses specific verbs ('list') and resources ('unread forwarded emails'), distinguishing it from siblings like mail_search (broad search) and mail_get (single email retrieval).

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

Usage Guidelines3/5

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

The description implies the tool is for listing pending (unread forwarded) emails, but does not explicitly state when to use it versus alternatives like mail_search or mail_archive. No guidance on prerequisites or exclusion criteria is provided.

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

mail_mark_readA
Idempotent

Mark a message as read in Hermes's inbox (removes the UNREAD label).

Returns dict with key: id (the message ID that was marked).

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Description adds the behavioral context of removing the UNREAD label, which is not encoded in annotations (non-destructive, idempotent). No contradiction with annotations.

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

Conciseness5/5

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

Two concise sentences, front-loaded with primary action, clear and efficient.

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?

Provides expected return format (dict with 'id'). Siblings suggest many mail tools, but no prerequisites or edge cases (e.g., already read) are discussed. Adequate for a simple idempotent operation.

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

Parameters2/5

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

Single parameter 'message_id' has no description in schema (0% coverage) and description provides no additional semantics beyond its role as the message identifier.

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

Purpose5/5

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

Description explicitly states the action: 'Mark a message as read in Hermes's inbox (removes the UNREAD label).' It clearly distinguishes from sibling tools like 'mail_archive' and 'mail_search'.

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

Usage Guidelines3/5

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

Does not provide explicit guidance on when to use this tool versus alternatives. The description implies usage for marking a message read, but no when-not-to-use or comparison with siblings.

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

mail_send_draftA

Send a draft email from Hermes's account.

The destination should be the sender returned by mail_get — i.e. the user who forwarded the message to Hermes. To reply to a thread, pass the in_reply_to value from mail_get.

Returns dict with key: id (sent message ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
bodyYes
subjectYes
in_reply_toNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are sparse (no readOnlyHint, destructiveHint false). The description adds value by specifying the return value (`id`). It does not contradict annotations, but could mention if sending a draft is irreversible or if any side effects occur. Still, it provides useful behavioral context beyond annotations.

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

Conciseness5/5

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

The description is only three sentences, each sentence serves a distinct purpose: purpose, usage, return value. It is front-loaded and contains no fluff.

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?

Given the tool's simplicity (4 params, no nested objects), the description covers the core behavior, usage in context of other mail tools, and return format. It does not discuss error cases or prerequisites like draft existence, but it is adequate for the minimal complexity.

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 0%, so the description must compensate. It explains `to` and `in_reply_to` but does not describe `subject` or `body`. However, `subject` and `body` are self-explanatory. Partial coverage, but not fully compensating for all parameters.

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

Purpose5/5

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

The description clearly states the verb ('Send'), resource ('draft email'), and origin ('from Hermes's account'). It differentiates from sibling tools like mail_get by specifically indicating sending drafts, and provides context for replying.

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

Usage Guidelines4/5

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

The tool description tells when to use it (to send drafts) and provides specific guidance: use the `sender` from mail_get as destination, and pass `in_reply_to` for thread replies. It does not explicitly state when not to use it, but the context is clear enough.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.0
    • First observedauth_status
    • First observedcal_create_event
    • First observedcal_delete_event
    • First observedcal_list_calendars
    • First observedcal_list_events
    • First observedcal_update_event
    • First observeddrive_delete
    • First observeddrive_get
    • First observeddrive_list
    • First observeddrive_move
    • First observeddrive_search
    • First observeddrive_update
    • First observeddrive_upload
    • First observedmail_archive
    • First observedmail_get
    • First observedmail_list_pending
    • First observedmail_mark_read
    • First observedmail_search
    • First observedmail_send_draft

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct operation within its service (auth, calendar, drive, mail). Tools like cal_create_event and cal_delete_event have clearly different purposes, and no two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with service-specific prefixes (auth_, cal_, drive_, mail_). Verbs like list_, create_, delete_, update_ are used uniformly, making it easy to predict tool behavior.

Tool Count5/5

With 19 tools covering four Google services (auth, calendar, drive, mail), the count is well-scoped. Each service has a natural number of tools (5 calendar, 7 drive, 6 mail, 1 auth) without redundancy or gaps.

Completeness4/5

The tool surface provides CRUD operations for calendar events and drive files, plus comprehensive email search and management. Missing features like sending arbitrary emails or managing labels are minor given the server's focus on a personal assistant's inbox, but could be considered a gap for full email coverage.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables Claude to manage Gmail, Google Calendar, and Google Contacts through a safety-first interface with soft-delete protections and draft-only email capabilities. Supports multiple Google accounts with comprehensive mutation logging and mandatory manual confirmation for destructive actions.
    16
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude Code to Gmail for reading, searching, drafting, and managing emails with features like labels, filters, and smart workflows.
    152
    MIT

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/jimmy-larsson/hermes-google'

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