kdeps-components-email
v1.1.1kdeps kdeps-component: email
set components / shelf workflow
PurposeSend email over SMTP and read, search, modify, list or delete IMAP mailboxes
LLM context: ~622 tokens when loaded (prompt or tool definition)
Where it runs
Part of the components set, used in workflow and agent mode. Ready-made workflow steps (sql, browser, email, git, ocr...) a resource calls by name; in agent mode they are also tools.
- a resource names a component (or the model calls it as a tool)
- the component's own resources runcomponents/email
- its output goes back to the caller
Loaded by: kdeps (agent loop), /settings, kdeps validate, kdeps run, kdeps bundle package, kdeps env, kdeps export k8s, kdeps test
In the code: kdeps (agent loop)yaml.(*Parser).ParseWorkflowyaml.(*Parser).loadAssetComponents
Install
A kdeps asset: installed with the first-run profile that includes its set, or the first time a command needs it, and updated without a new release.
Also installs what it requires, when missing or older: schemas/v1 >=1.0.4, tools/email_ops.
Pin a version with kdeps install components/email@<version>.
Contents
component.yaml
apiVersion: kdeps.io/v1
kind: Component
metadata:
name: email
description: Send email over SMTP and read, search, modify, list or delete IMAP mailboxes
version: "1.1.1"
interface:
inputs:
- name: action
type: string
default: send
description: send, read, search, modify, list or delete
- name: smtpConnection
type: string
default: ""
connection: smtp
description: Name under smtp_connections in ~/.kdeps/config.yaml (send)
- name: imapConnection
type: string
default: ""
connection: imap
description: Name under imap_connections in ~/.kdeps/config.yaml (read, search, modify, list, delete)
- name: from
type: string
default: ""
description: Sender address (send); defaults to identity.email in ~/.kdeps/config.yaml
- name: to
type: array
default: []
description: Recipients (send); a list, or one comma-separated string
- name: cc
type: array
default: []
description: Cc recipients (send)
- name: bcc
type: array
default: []
description: Bcc recipients (send); not written to the headers
- name: subject
type: string
default: ""
description: Subject (send)
- name: body
type: string
default: ""
description: Message body (send)
- name: html
type: boolean
default: false
description: Send the body as text/html
- name: attachments
type: array
default: []
description: File paths to attach (send); relative paths resolve against the workflow directory
- name: mailbox
type: string
default: ""
description: Mailbox (default INBOX); required for delete
- name: limit
type: integer
default: 10
description: Messages to return at most (read, search)
- name: markRead
type: boolean
default: false
description: Mark returned messages as seen (read, search)
- name: uids
type: array
default: []
description: Message UIDs to modify; empty means every message the search criteria match
- name: search
type: object
default: {}
description: "Criteria for search and modify: from, subject, body, since, before (YYYY-MM-DD), unseen, flagged"
- name: modify
type: object
default: {}
description: "Changes for modify: markSeen, markFlagged, markDeleted (true/false), moveTo, expunge"
- name: timeout
type: string
default: 30s
description: Connection timeout as a duration
# The tool returns the action result: the send summary, or the message,
# mailbox or modify result described on the email component page.
output: "{{ fromJSON(output('emailOperation').body) }}"
resources:
# One call to the kdeps API's email_ops tool: the component holds no email
# code of its own. The tool reads the named SMTP/IMAP connection from
# config.yaml in the kdeps process, so passwords never cross this request.
- actionId: emailOperation
name: Email
httpClient:
method: POST
url: http://kdeps.api/apis/tools.kdeps.io/v1/tools/email_ops/call
headers:
Content-Type: application/json
failOnError: true
timeout: 600s
data:
action: "{{ get('email.action') }}"
smtpConnection: "{{ get('email.smtpConnection') }}"
imapConnection: "{{ get('email.imapConnection') }}"
from: "{{ get('email.from') }}"
to: "{{ get('email.to') }}"
cc: "{{ get('email.cc') }}"
bcc: "{{ get('email.bcc') }}"
subject: "{{ get('email.subject') }}"
body: "{{ get('email.body') }}"
html: "{{ get('email.html') }}"
attachments: "{{ get('email.attachments') }}"
mailbox: "{{ get('email.mailbox') }}"
limit: "{{ get('email.limit') }}"
markRead: "{{ get('email.markRead') }}"
uids: "{{ get('email.uids') }}"
search: "{{ get('email.search') }}"
modify: "{{ get('email.modify') }}"
timeout: "{{ get('email.timeout') }}"
requires:
schemas/v1: ">=1.0.4"
tools/email_ops: ""
version: 1.1.1
requires:
schemas/v1: '>=1.0.4'
tools/email_ops: ""
files:
component.yaml: |
apiVersion: kdeps.io/v1
kind: Component
metadata:
name: email
description: Send email over SMTP and read, search, modify, list or delete IMAP mailboxes
version: "1.1.1"
interface:
inputs:
- name: action
type: string
default: send
description: send, read, search, modify, list or delete
- name: smtpConnection
type: string
default: ""
connection: smtp
description: Name under smtp_connections in ~/.kdeps/config.yaml (send)
- name: imapConnection
type: string
default: ""
connection: imap
description: Name under imap_connections in ~/.kdeps/config.yaml (read, search, modify, list, delete)
- name: from
type: string
default: ""
description: Sender address (send); defaults to identity.email in ~/.kdeps/config.yaml
- name: to
type: array
default: []
description: Recipients (send); a list, or one comma-separated string
- name: cc
type: array
default: []
description: Cc recipients (send)
- name: bcc
type: array
default: []
description: Bcc recipients (send); not written to the headers
- name: subject
type: string
default: ""
description: Subject (send)
- name: body
type: string
default: ""
description: Message body (send)
- name: html
type: boolean
default: false
description: Send the body as text/html
- name: attachments
type: array
default: []
description: File paths to attach (send); relative paths resolve against the workflow directory
- name: mailbox
type: string
default: ""
description: Mailbox (default INBOX); required for delete
- name: limit
type: integer
default: 10
description: Messages to return at most (read, search)
- name: markRead
type: boolean
default: false
description: Mark returned messages as seen (read, search)
- name: uids
type: array
default: []
description: Message UIDs to modify; empty means every message the search criteria match
- name: search
type: object
default: {}
description: "Criteria for search and modify: from, subject, body, since, before (YYYY-MM-DD), unseen, flagged"
- name: modify
type: object
default: {}
description: "Changes for modify: markSeen, markFlagged, markDeleted (true/false), moveTo, expunge"
- name: timeout
type: string
default: 30s
description: Connection timeout as a duration
# The tool returns the action result: the send summary, or the message,
# mailbox or modify result described on the email component page.
output: "{{ fromJSON(output('emailOperation').body) }}"
resources:
# One call to the kdeps API's email_ops tool: the component holds no email
# code of its own. The tool reads the named SMTP/IMAP connection from
# config.yaml in the kdeps process, so passwords never cross this request.
- actionId: emailOperation
name: Email
httpClient:
method: POST
url: http://kdeps.api/apis/tools.kdeps.io/v1/tools/email_ops/call
headers:
Content-Type: application/json
failOnError: true
timeout: 600s
data:
action: "{{ get('email.action') }}"
smtpConnection: "{{ get('email.smtpConnection') }}"
imapConnection: "{{ get('email.imapConnection') }}"
from: "{{ get('email.from') }}"
to: "{{ get('email.to') }}"
cc: "{{ get('email.cc') }}"
bcc: "{{ get('email.bcc') }}"
subject: "{{ get('email.subject') }}"
body: "{{ get('email.body') }}"
html: "{{ get('email.html') }}"
attachments: "{{ get('email.attachments') }}"
mailbox: "{{ get('email.mailbox') }}"
limit: "{{ get('email.limit') }}"
markRead: "{{ get('email.markRead') }}"
uids: "{{ get('email.uids') }}"
search: "{{ get('email.search') }}"
modify: "{{ get('email.modify') }}"
timeout: "{{ get('email.timeout') }}"
Versions
| Version | Published | Status |
|---|---|---|
| 1.1.1 | 10/21/2026 | active |
| 1.1.0 | 10/21/2026 | active |
| 1.0.0 | 10/14/2026 | active |
Details
- Author
- kdeps
- License
- Apache-2.0
- Latest Version
- 1.1.1
- Published
- 10/14/2026