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.19.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.19-py3-none-any.whl (57.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: langchain_atomicmail-0.3.19.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.19.tar.gz
Algorithm Hash digest
SHA256 39172f9addda3bf8aaf3adfb0c178a234eac3352a2976a2115e1f1e00ec14be5
MD5 d7630d06eeef866738e7c12e62c22da5
BLAKE2b-256 88898f855799915c2f234e13389b4e62ce40157877be0b74d88d7be50c4d9b38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for langchain_atomicmail-0.3.19-py3-none-any.whl
Algorithm Hash digest
SHA256 c7e33cd0abcffb6b57d530a04764a2991800293e0949e4a184e9833fb982df51
MD5 34c3c97820568a23d5e55329493b71a5
BLAKE2b-256 7c844e974651d754e0df1a47631347079754ef04e7ad3dd1a43f646007d9b530

See more details on using hashes here.

Provenance

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