{
"$schema": "https://cmn.dev/schemas/v1/spore-core.json",
"id": "agent-first-mail",
"name": "Agent-First Mail",
"version": "0.2.0",
"domain": "agentfirstkit.com",
"key": "ed25519.BwbSzqdDYyMN1pPW5snRk3afrJAovHn8aueMvDpfNKVw",
"synopsis": "Let your AI agent work your inbox — email pulled into plain files it reads, sorts, and drafts on your machine, with nothing sent until you confirm.",
"intent": [
"Give AI agents a local-first email workspace where pulled messages become editable case files rather than a traditional inbox app",
"Preserve raw RFC822 mail while exposing mechanically cleaned text, message metadata, active cases, archived cases, direct-message archive categories, drafts, notes, and files through stable filesystem conventions",
"Keep the CLI focused on side effects such as read-only pull with case suggestions, explicit triage assignment, case moves, archive and restore operations, attachment fetches, reply draft scaffolding, draft validation, local push queuing, explicit push operations including read/unread flag work, audit log inspection, and local push queue cleanup"
],
"license": "MIT",
"mutations": [
"Support running afmail in a subdirectory workspace rather than only the directory root, so a mailbox workspace can sit alongside other project files",
"Collapse push into a single all-or-nothing operation that applies every pending real-mailbox effect together or none, removing partial-push states",
"Add a draft show command to read a draft's full rendered content before sending, and simplify the overall draft workflow",
"Unify message restore across lifecycles, make case reads work regardless of a message's lifecycle state, and allow adding a message straight into the archive",
"Clarify CLI documentation and fix doc/code drift across file-formats, workspace, and code-structure docs"
],
"bonds": [
{
"relation": "depends_on",
"uri": "cmn://agentfirstkit.com/b3.8GyV4Y1QYZwXkgDsm3gkHTuKtYq8FonU4NrMsdfzjnSS",
"id": "agent-first-data",
"reason": "All structured output, field suffixes, secret handling, and JSONL events follow Agent-First Data conventions"
}
],
"tree": {
"algorithm": "blob_tree_blake3_nfc",
"exclude_names": [
".git",
".cmn"
],
"follow_rules": [
".gitignore"
]
}
}