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.20rc1.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.20rc1-py3-none-any.whl (57.5 kB view details)

Uploaded Python 3

File details

Details for the file langchain_atomicmail-0.3.20rc1.tar.gz.

File metadata

  • Download URL: langchain_atomicmail-0.3.20rc1.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.20rc1.tar.gz
Algorithm Hash digest
SHA256 f07f933b7af06eee6c55fc7d86c6cd7a0db5ebd34e11ee0ee7ab71109bd652d0
MD5 33f201527859362198a2ae6d510405da
BLAKE2b-256 e70062a6e81373d44a0a47c4dcf129116746c09711fd0cf27ccbf7e934c35c7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_atomicmail-0.3.20rc1.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.20rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_atomicmail-0.3.20rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 14b3789a382e32353fd2b9661c13f40686b43b0c021ee2759cdb88772bc4eb20
MD5 62e7b4167aea0a6ae39788f4218b3539
BLAKE2b-256 6242d61132ab38c2ac972ea960b145127fa0fd6d13cfdcd04e06b31de5de3650

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_atomicmail-0.3.20rc1-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