Metadata-Version: 2.4
Name: mdraft
Version: 0.0.1
Summary: Email drafting and gated sending over the mddb card substrate
Author-email: Handley Research Group <wh260@cam.ac.uk>
License-Expression: MIT
Project-URL: Homepage, https://github.com/handley-lab/mdraft
Project-URL: Repository, https://github.com/handley-lab/mdraft
Project-URL: Issues, https://github.com/handley-lab/mdraft/issues
Keywords: email,drafting,agents,yaml,markdown,mddb
Classifier: Development Status :: 1 - Planning
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications :: Email
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mddb
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: ruff>=0.5; extra == "dev"
Dynamic: license-file

# mdraft

Email drafting and gated sending over the [mddb](https://github.com/handley-lab/mddb)
card substrate — the outbound half of bringing email into an agentic system.

An agent and a human compose an email together: the draft is an mddb card in a
git-backed deck, every edit a commit, every steer recorded. The agent can write
drafts; it structurally **cannot send**. The only thing that flushes an approved
draft to the wire (msmtp underneath) is the owner's explicit act, taken after
reading the verbatim outgoing text. Sending without that act is a never-event
by construction, not by prompt.

The same deck is the learning corpus: the proposal→final diff and the steers
that produced it are exactly the data a mailbox throws away. Sent mail is never
duplicated — cards reference the mail store (notmuch) by Message-ID.

## Status

Design — see `DESIGN.md` for the founding interests and scope.
