Email Archive
Autonomous, searchable email archives. Create archives and link mailboxes (local or external) to them as context sources, then search across the archived mail.
Endpoints (21)
Create a new autonomous email archive owned by an email address.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes | Human-friendly archive name (e.g. "M25 mail"). |
owner_email |
string | ✓ Yes | Owner email address. |
description |
string | No | Optional description of what this archive holds. |
List archives with their source counts. Optionally filter by owner email.
| Field | Type | Required | Description |
|---|---|---|---|
owner_email |
string | No | Filter archives by owner email. |
Deactivate an archive. Stops syncing into it; archived messages are preserved.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive ID to deactivate. |
Register an external mail source (Gmail, Outlook, custom IMAP) for archiving. Credentials are stored encrypted. Link it to an archive separately with link-source.
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | ✓ Yes | Mailbox email address. |
imap_host |
string | ✓ Yes | IMAP server hostname (e.g. "imap.gmail.com"). |
imap_port |
integer | No | IMAP port (default 993 for SSL). |
encryption |
string | No | none, ssl, or starttls (default ssl). |
auth_method |
string | No | password or oauth (default password). |
credential |
string | ✓ Yes | Password or OAuth token — stored encrypted. |
folders |
array | No | Folders to sync. Leave empty to auto-discover all folders via IMAP LIST. |
List all archive sources (mailboxes), or the sources linked to a specific archive. Never returns credentials.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | No | If given, list only sources linked to this archive. |
Link a mailbox source to an archive so its mail flows into that archive. A source can feed multiple archives.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Target archive ID. |
source_id |
integer | ✓ Yes | Source (mailbox) ID to link. |
Unlink a source from an archive. Stops future syncing into it; already-archived messages are preserved.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive ID. |
source_id |
integer | ✓ Yes | Source (mailbox) ID to unlink. |
Search within one archive. Modes: keyword (full-text), semantic (meaning-based), hybrid (both merged). Combine a text query with optional filters (sender, folder, date range, attachments). Returns message metadata (no body) ordered by relevance or date.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive to search within (tenant scope). |
query |
string | No | Full-text query over subject, body, recipients and attachment names. Empty = filter only. |
mode |
string | No | keyword (default, full-text), semantic (meaning-based, embedded messages only), or hybrid (both merged — best recall). |
from_email |
string | No | Filter by exact sender email. |
folder |
string | No | Filter by IMAP folder (e.g. "INBOX"). |
has_attachments |
integer | No | 1 = only messages with attachments, 0 = only without. |
date_from |
string | No | Only messages received on/after this date (ISO date or unix timestamp). |
date_to |
string | No | Only messages received on/before this date (ISO date or unix timestamp). |
sort |
string | No | relevance (default), newest, or oldest. |
limit |
integer | No | Results per page (default 20, max 100). |
offset |
integer | No | Pagination offset (default 0). |
Fetch one archived message in full (incl. body) by its archive doc id or message_id. Scoped to the given archive.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive the message belongs to (tenant scope). |
id |
integer | No | Archive doc id (from a search result). Either id or message_id is required. |
message_id |
string | No | RFC Message-ID. Either id or message_id is required. |
Fetch all messages in a thread (by thread_id) within one archive, ordered chronologically. Metadata only — use get-message for a body.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive the thread belongs to (tenant scope). |
thread_id |
string | ✓ Yes | Thread identifier (from a search/message result). |
Aggregate statistics for one archive: message count, total size, attachment count, indexed count, date range, and per-folder counts.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive to report on (tenant scope). |
LLM-ready feed for one context: rolling summary plus pinned and recent raw messages within the token cap.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive the context belongs to (tenant scope). |
context_id |
integer | ✓ Yes | Context to feed. |
Fold the oldest non-pinned messages of a context into its rolling summary. Normally triggered automatically when the context exceeds its compression threshold.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive the context belongs to (tenant scope). |
context_id |
integer | ✓ Yes | Context to compress. |
force |
integer | No | 1 = compress even below the threshold. |
Create a context in an archive (find-or-create on name). Seeds members by keyword match. Pass keywords as an array or CSV string (required, handler-validated). Optional: filters object.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
name |
string | ✓ Yes | Context name (max 190). |
query |
string | No | Original search query (informational). |
parent_id |
integer | No | Parent context for sub-contexts. |
List all contexts of an archive with member counts and staleness.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
Fetch one context incl. rolling summary and resolved config (context → archive → platform cascade).
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
context_id |
integer | ✓ Yes | Context id. |
Update context fields (name, query, parent_id, token_cap, compress_threshold, auto_pull, embed_strategy). keywords (array/CSV) triggers a re-seed; filters object replaces filters. Handler-validated.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
context_id |
integer | ✓ Yes | Context id. |
name |
string | No | New name (max 190). |
query |
string | No | New query. |
parent_id |
integer | No | New parent (null to detach). |
token_cap |
integer | No | Override token cap (null = inherit). |
compress_threshold |
integer | No | Override threshold %% (null = inherit). |
auto_pull |
integer | No | 1/0 override (null = inherit). |
embed_strategy |
string | No | lazy or eager (null = inherit). |
Delete a context (members removed, messages preserved). Fails 409 if it has sub-contexts.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
context_id |
integer | ✓ Yes | Context id. |
Match a search query against existing contexts of an archive (lexical scoring). Use before context-create for find-or-create flows.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
query |
string | ✓ Yes | Search query to match. |
List context members (pinned first, relevance-ordered).
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
context_id |
integer | ✓ Yes | Context id. |
limit |
integer | No | Default 50. |
offset |
integer | No | Default 0. |
include_excluded |
integer | No | 1 = include excluded members. |
Manage one membership: add, remove, pin, unpin, exclude (stay out despite matches), include.
| Field | Type | Required | Description |
|---|---|---|---|
archive_id |
integer | ✓ Yes | Archive (tenant scope). |
context_id |
integer | ✓ Yes | Context id. |
message_id |
integer | ✓ Yes | Message row id. |
action |
string | ✓ Yes | add | remove | pin | unpin | exclude | include. |
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| create-archive | email_archive_create_archive |
| list-archives | email_archive_list_archives |
| deactivate-archive | email_archive_deactivate_archive |
| register-external-source | email_archive_register_external_source |
| list-sources | email_archive_list_sources |
| link-source | email_archive_link_source |
| unlink-source | email_archive_unlink_source |
| search | email_archive_search |
| get-message | email_archive_get_message |
| get-thread | email_archive_get_thread |
| get-stats | email_archive_get_stats |
| context-feed | email_archive_context_feed |
| context-compress | email_archive_context_compress |
| context-create | email_archive_context_create |
| context-list | email_archive_context_list |
| context-get | email_archive_context_get |
| context-update | email_archive_context_update |
| context-delete | email_archive_context_delete |
| context-match | email_archive_context_match |
| context-members | email_archive_context_members |
| context-member-update | email_archive_context_member_update |
Website