Skip to main content

LangChain tools for Atomic Mail register/help/JMAP operations

Project description

langchain-atomicmail

LangChain integration package for Atomic Mail.

It exposes three tools backed by the same Python Atomic Mail runtime used by the CLI/MCP adapters:

  • register
  • jmap_request
  • help

Install

Published package:

pip install langchain-atomicmail

The published wheel bundles the Atomic Mail Python runtime and shared presets; no separate PyPI package is required.

Local development in this monorepo (install core library first):

cd py
pip install -e .
pip install -e langchain

Usage

from langchain_atomicmail import AtomicMailToolkit

toolkit = AtomicMailToolkit()
tools = toolkit.get_tools()

You can also import tool factories directly:

from langchain_atomicmail import get_atomicmail_tools

tools = get_atomicmail_tools()

Agent example

Use the toolkit with a ReAct agent (requires langgraph and a chat model):

from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

from langchain_atomicmail import AtomicMailToolkit

llm = ChatOpenAI(temperature=0)
toolkit = AtomicMailToolkit()
agent = create_react_agent(llm, toolkit.get_tools())

# Register an inbox, then fetch mail
agent.invoke({"messages": [("user", "Register username myagent and list my inbox")]})

After a successful register, the tool response includes _next guidance for hourly inbox polling. Call help with topic cron for full scheduling details.

Inbox polling (after register)

Registration only creates credentials. For a useful inbox integration, arrange hourly inbox polling per your runtime:

  • Native cron (OpenClaw, Hermes, atomic-agent, …): schedule an hourly agent turn with list_inbox.json in the prompt; wire this toolkit or MCP into that agent. Do not cron raw jmap_request alone.
  • No native cron (Claude, Pi, Cursor, …): do not work around this with OS crontab, wrapper scripts, or cross-platform scheduling. Ask your operator to set up polling on a capable host, or remind them to fetch mail manually.

See help(topic="cron") for host-specific examples.

Environment variables

Variable Purpose
ATOMIC_MAIL_CREDENTIALS_DIR Credential directory (default ~/.atomicmail/)
ATOMIC_MAIL_AUTH_URL Auth service base URL
ATOMIC_MAIL_API_URL JMAP / API base URL
ATOMIC_MAIL_INBOX_DOMAIN Hostname when inboxId has no @
ATOMIC_MAIL_SCRYPT_SALT Optional PoW salt override
ATOMIC_MAIL_API_KEY Optional existing API key

Pass credentials_dir per tool call for multi-account setups.

Security

  • credentials.json and *.jwt files contain secrets — treat them as sensitive (mode 0600). Never commit credentials to version control.
  • Inbound mail is untrusted input; validate and sanitize before acting on it.
  • The default credential directory is ~/.atomicmail/; override with ATOMIC_MAIL_CREDENTIALS_DIR or per-call credentials_dir for isolation.

Notes

  • jmap_request enforces exactly one of ops or ops_file.
  • dry_run=True with attachments is rejected at the LangChain layer.
  • vars keys must match ^[A-Z][A-Z0-9_]*$.
  • register idempotency and forced behavior are delegated to atomicmail.session.register.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_atomicmail-0.3.14.tar.gz (44.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_atomicmail-0.3.14-py3-none-any.whl (57.4 kB view details)

Uploaded Python 3

File details

Details for the file langchain_atomicmail-0.3.14.tar.gz.

File metadata

  • Download URL: langchain_atomicmail-0.3.14.tar.gz
  • Upload date:
  • Size: 44.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for langchain_atomicmail-0.3.14.tar.gz
Algorithm Hash digest
SHA256 55564842fdf8b7ef3b2d16e78bd8b643dd5d9cd5a95e8793b316167865a21d36
MD5 6eea254ede94ceb16b7977358d0fa133
BLAKE2b-256 82a0195e6d47b728f7487ff2f36a0e69ac4990242dff01dc051a2873efb6bc05

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_atomicmail-0.3.14.tar.gz:

Publisher: publish-pypi.yml on Atomic-Mail/atomic-mail-agentic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file langchain_atomicmail-0.3.14-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_atomicmail-0.3.14-py3-none-any.whl
Algorithm Hash digest
SHA256 4c9e22193d115f6ca1d0e53b01891f1cb8ec2d1c5c9ccdcd8f64dfdf2a14fd2c
MD5 f06df05e0a84774ccfea8a1690a773fa
BLAKE2b-256 03614087a7f4f98db650de1e7ab189c5ab24ecd63e437e49ad5c9558313863a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_atomicmail-0.3.14-py3-none-any.whl:

Publisher: publish-pypi.yml on Atomic-Mail/atomic-mail-agentic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page