joshu-mail

Search and recall email across local mail mirrors and live Gmail via Composio.

108|11|Updated Jun 26, 2026
One-click install
npx skills add https://github.com/db-aeon/joshu-oss --skill joshu-mail-db-aeon
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: joshu-mail
Source: https://github.com/db-aeon/joshu-oss/tree/main/integrations/hermes/skills/mail/joshu-mail
Command: npx skills add https://github.com/db-aeon/joshu-oss --skill joshu-mail-db-aeon

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Finding a specific email is hard when messages are spread across multiple Gmail accounts, an agent Nylas inbox, and local mirrors that may lag or miss pre-connect history. This Skill gives agents a deterministic search order so mail is found quickly from the local cache first, with a correct escalation path to live Gmail when mirrors miss. ## Core Features & Use Cases - Tiered mail search: Query gbrain semantic index first, check connector status and optionally sync, grep on-disk thread mirrors, then fall back to Composio live Gmail only when the local cache misses. - Multi-account Gmail handling: Match the user's named inbox to the correct account_key and connectedAccountId, with mirror fallback when Composio session routing returns the wrong account. - Agent outbound send: Send and reply from the agent Nylas mailbox with correct reply-all threading, exact subject matching, and action-guard approval. - Use Case: A user asks "what did Alice email about the budget last month?" The agent queries gbrain over the synced mirrors, reads the matching thread markdown, and answers — escalating to a Composio live Gmail session only if the mirror does not contain the thread. ## Quick Start Load the joshu-mail skill and search my email for the thread from Alice about the budget.

Frequently Asked Questions about joshu-mail

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I search Gmail from an AI agent?

Search the local cache first: query the gbrain semantic index over synced mail mirrors, then grep the on-disk thread markdown for exact subjects. Only if those miss, run a Composio live Gmail session with GMAIL_FETCH_EMAILS against Google's servers.

How do I search a specific Gmail account when multiple are connected?

Call connectors_status to list gmail.accounts with email, accountKey, and connectedAccountId, then match the account the user named. In Composio, pass the connected account in known_fields and always use user_id "me" on GMAIL_FETCH_EMAILS, never an email address.

When should I use Composio live Gmail instead of local mail mirrors?

Use Composio live Gmail only when the local cache misses: gbrain, connector sync, and disk grep return nothing, the mail predates the connection, or the user explicitly asks for a live search. It is a heavier remote session, not another local grep.

Why does GMAIL_FETCH_EMAILS return the wrong account's emails?

The Composio session may be bound to a different connected account, and user_id "me" resolves to that session's account. Fall back to the mirror path for the correct accountKey, listing threads by modification time and reading frontmatter for sender, subject, and date.

How do I add someone to an email I already sent?

Find the sent message in the Nylas mirror, get its message id, then send with nylas_send_message using replyToMessageId. Manually repopulate the full To and CC lists including the new person, since replyToMessageId threads the reply but does not preserve prior recipients.

Can the agent send email from the owner's Gmail account?

No. Principal Gmail send and reply are blocked for agents and restricted to the owner's jMail UI. The agent sends only from its Nylas mailbox via the nylas_send_message MCP tool, which passes through an action-guard approval gate.