### Kotest Example Test Source: https://github.com/mattbobambrose/agentmail4k/blob/master/CLAUDE.md An example test case using Kotest with StringSpec style. This demonstrates the basic structure for writing tests within the project. ```kotlin class ExampleTest : StringSpec() { init { "should do something" { // test body } } } ``` -------------------------------- ### Quick Start with AgentMailClient Source: https://github.com/mattbobambrose/agentmail4k/blob/master/README.md Initialize the client, create an inbox, and send a message using the DSL. ```kotlin suspend fun quickStart() { val client = AgentMailClient() // Create an inbox val inbox = client.createInbox("support", "example.com", "Support Team") println("Created inbox: ${inbox.email}") // Send a message val response = client.sendMessage { from = inbox.inboxId to = listOf("user@example.com") subject = "Hello from AgentMail!" text = "This is a test message sent with agentmail4k." } println("Sent message: ${response.messageId}" client.close() } ``` -------------------------------- ### Get a Domain Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/domains.md Fetches details for a specific domain by its identifier. ```kotlin --8<-- "Domains.kt:get-domain" ``` -------------------------------- ### Webhook Handler Implementation Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/webhooks.md Provides examples for handling incoming webhook events and custom event routing. ```kotlin --8<-- "Webhooks.kt:webhook-handler" ``` ```kotlin --8<-- "Webhooks.kt:webhook-handler-custom" ``` -------------------------------- ### Get an Entry Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/lists.md Retrieves a specific entry from the lists. ```kotlin --8<-- "Lists.kt:get-entry" ``` -------------------------------- ### Install agentmail4k via Gradle Source: https://github.com/mattbobambrose/agentmail4k/blob/master/README.md Add the dependency to your project using Kotlin DSL or Groovy. ```kotlin dependencies { implementation("com.agentmail4k:agentmail4k:0.1.0") } ``` ```groovy dependencies { implementation 'com.agentmail4k:agentmail4k:0.1.0' } ``` -------------------------------- ### Get Zone File Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/domains.md Retrieves the DNS zone file configuration for a specific domain. ```kotlin --8<-- "Domains.kt:zone-file" ``` -------------------------------- ### Get a Webhook Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/webhooks.md Fetches details for a specific webhook by its identifier. ```kotlin --8<-- "Webhooks.kt:get-webhook" ``` -------------------------------- ### Configure Auto-Reply Rules Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Defines the AutoReplyBuilder DSL for setting reply rules and default actions, and the autoReply function for starting the monitor. ```kotlin /** DSL builder for configuring automatic reply rules with match conditions and reply actions. */ class AutoReplyBuilder { var pollInterval: Duration /** Adds an auto-reply rule that replies when the [match] predicate returns true. */ fun rule( match: (Message) -> Boolean, reply: ReplyBuilder.(Message) -> Unit, ) /** Sets the default reply action for messages that don't match any rule. */ fun default(reply: ReplyBuilder.(Message) -> Unit) } /** Starts an auto-reply monitor on the given inbox that automatically replies to incoming messages based on configured rules. */ fun AgentMailClient.autoReply( inboxId: String, scope: CoroutineScope = CoroutineScope(Dispatchers.Default + SupervisorJob()), block: AutoReplyBuilder.() -> Unit, ): Job ``` -------------------------------- ### Setup Auto-Reply Workflow in Kotlin Source: https://context7.com/mattbobambrose/agentmail4k/llms.txt Configure automatic email replies with custom rules and a default fallback. The auto-reply job runs for a specified duration and can be cancelled. ```kotlin import com.agentmail4k.sdk.AgentMailClient import com.agentmail4k.dsl.autoReply import kotlinx.coroutines.delay import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds suspend fun setupAutoReply() { val client = AgentMailClient() val inboxId = "inbox_abc123" val autoReplyJob = client.autoReply(inboxId) { pollInterval = 5.seconds // Rule: Reply to support requests rule( match = { msg -> msg.subject?.contains("support", ignoreCase = true) == true }, reply = { msg -> text = """ Thank you for contacting support! Your request regarding "${msg.subject}" has been received. A support agent will respond within 24 hours. Reference: ${msg.messageId} """.trimIndent() } ) // Rule: Auto-acknowledge orders rule( match = { msg -> msg.from.endsWith("@orders.example.com") }, reply = { msg -> text = "Order confirmation received. Processing..." html = "
Order confirmation received. Processing...
" } ) // Rule: Out of office for specific senders rule( match = { msg -> msg.labels.contains("vip") }, reply = { msg -> text = "Thank you for your message. I'm currently out of office and will respond upon my return." } ) // Default reply for unmatched messages default { msg -> text = "Thank you for your email. We'll get back to you soon." } } // Run auto-reply for 1 hour delay(1.minutes) autoReplyJob.cancel() client.close() } ``` -------------------------------- ### Get a Pod in Kotlin Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/pods.md Fetches details for a specific pod by its identifier. ```kotlin --8<-- "Pods.kt:get-pod" ``` -------------------------------- ### Get a Draft in Kotlin Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/drafts.md Fetches details for a specific draft by its identifier. ```kotlin --8<-- "Drafts.kt:get-draft" ``` -------------------------------- ### Pod Scope Example Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/scoped-access.md Obtain a scoped view of a pod's resources using `client.pods(podId)`. This is beneficial for executing multiple operations on the same pod. ```kotlin val pod = client.pods("pod-456") val runs = pod.runs().list() val tasks = pod.tasks().list() ``` -------------------------------- ### GET /metrics Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/metrics.md Retrieves email metrics for the authenticated account. ```APIDOC ## GET /metrics ### Description Retrieve email metrics for your account. ### Method GET ### Endpoint /metrics ``` -------------------------------- ### Get Raw Message in Kotlin Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/messages.md Retrieves the raw RFC 822 formatted email content. ```kotlin --8<-- "Messages.kt:raw-message" ``` -------------------------------- ### Get a Thread Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/threads.md Fetches a specific thread by its ID. Use this to access the details of a particular conversation. ```kotlin --8<-- "Threads.kt:get-thread" ``` -------------------------------- ### Configure Inbox Monitoring Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Defines the MonitorBuilder DSL for setting polling intervals and message handlers, and the monitor function for starting the polling coroutine. ```kotlin /** DSL builder for configuring inbox monitoring with message handlers, error handlers, and polling settings. */ class MonitorBuilder { var pollInterval: Duration var includeSpam: Boolean var includeBlocked: Boolean /** Sets the handler invoked for each new message (preview content only). */ fun onMessage(handler: suspend (Message) -> Unit) /** Sets the handler invoked for each new message (fetches full content). */ fun onFullMessage(handler: suspend (Message) -> Unit) /** Sets the handler invoked when a polling error occurs. */ fun onError(handler: suspend (Throwable) -> Unit) } /** Starts a coroutine that polls an inbox for new messages and invokes handlers. */ fun AgentMailClient.monitor( inboxId: String, scope: CoroutineScope = CoroutineScope(Dispatchers.Default + SupervisorJob()), block: MonitorBuilder.() -> Unit, ): Job ``` -------------------------------- ### Inbox Scope Example Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/scoped-access.md Obtain a scoped view of an inbox's resources using `client.inboxes(inboxId)`. This is useful when performing multiple operations on the same inbox. ```kotlin val inbox = client.inboxes("inbox-123") val messages = inbox.messages().list() val threads = inbox.threads().list() val drafts = inbox.drafts().list() ``` -------------------------------- ### Create a Domain Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/domains.md Initializes a new custom domain for email operations. ```kotlin --8<-- "Domains.kt:create-domain" ``` -------------------------------- ### Initialize AgentMail Client Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/getting-started.md Methods for instantiating the client using environment variables or explicit configuration. ```kotlin --8<-- "GettingStarted.kt:create-client-env" ``` ```kotlin --8<-- "GettingStarted.kt:create-client-explicit" ``` -------------------------------- ### GET /organization Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/metrics.md Retrieves information about the user's organization. ```APIDOC ## GET /organization ### Description Retrieve your organization information. ### Method GET ### Endpoint /organization ``` -------------------------------- ### Manage Custom Domains with Kotlin Source: https://context7.com/mattbobambrose/agentmail4k/llms.txt Covers domain registration, DNS zone file retrieval, verification, and lifecycle management. ```kotlin import com.agentmail4k.sdk.AgentMailClient suspend fun manageDomains() { val client = AgentMailClient() // Create a custom domain val domain = client.domains.create { name = "mycompany.com" } println("Created domain: ${domain.domainId}") println("Status: ${domain.status}") // List all domains val domains = client.domains.list { limit = 10 ascending = true } domains.domains.forEach { d -> println("${d.name}: ${d.status}") } // Get domain details val retrieved = client.domains.get(domain.domainId) // Get DNS zone file for configuration val zoneFile = client.domains.getZoneFile(domain.domainId) println("Zone file:\n${String(zoneFile)}") // Trigger DNS verification client.domains.verify(domain.domainId) // Update domain val updated = client.domains.update(domain.domainId) { name = "newdomain.com" } // Delete domain client.domains.delete(domain.domainId) client.close() } ``` -------------------------------- ### GET /metrics/period Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/metrics.md Query metrics at different time granularities. ```APIDOC ## GET /metrics/period ### Description Query metrics at different time granularities. ### Method GET ### Endpoint /metrics/period ### Parameters #### Query Parameters - **Period** (string) - Required - The granularity of the metrics: HOUR, DAY, WEEK, or MONTH. ``` -------------------------------- ### Run Tests and Generate Documentation Source: https://github.com/mattbobambrose/agentmail4k/blob/master/README.md Commands to execute tests and generate KDoc documentation locally. ```bash ./gradlew test ``` ```bash ./gradlew dokkaGenerate ``` -------------------------------- ### Create a Pod in Kotlin Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/pods.md Initializes a new pod resource within the workspace. ```kotlin --8<-- "Pods.kt:create-pod" ``` -------------------------------- ### Configure Client Settings Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Customize client behavior including defaults, timeouts, and retry logic. ```kotlin --8<-- "Configuration.kt:full-config" ``` ```kotlin --8<-- "Configuration.kt:defaults" ``` ```kotlin --8<-- "Configuration.kt:timeout-config" ``` ```kotlin --8<-- "Configuration.kt:retry-config" ``` -------------------------------- ### Get a Thread Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/threads.md Retrieves the details of a specific email thread by its identifier. ```APIDOC ## GET /threads/{threadId} ### Description Fetches the full details of a specific thread. ### Method GET ### Endpoint /threads/{threadId} ### Parameters #### Path Parameters - **threadId** (string) - Required - The unique identifier of the thread. ``` -------------------------------- ### Configure AgentMailClient Source: https://github.com/mattbobambrose/agentmail4k/blob/master/README.md Initialize the client using environment variables or explicit configuration settings. ```kotlin // From environment (reads AGENTMAIL_API_KEY) val client = AgentMailClient() // Explicit API key with custom settings val client = AgentMailClient { apiKey = "your-api-key" baseUrl = "https://api.agentmail.to" timeout { connect = 10.seconds request = 30.seconds } retry { maxRetries = 3 retryOnServerErrors = true } } ``` -------------------------------- ### Configure AgentMailClient with full settings Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/configuration.md Use the DSL builder to define all available configuration options for the client. ```kotlin --8<-- "Configuration.kt:full-config" ``` -------------------------------- ### AgentMailClient Initialization Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt The main entry point for the SDK, used to configure and instantiate the client. ```APIDOC ## AgentMailClient Initialization ### Description Creates a new instance of the AgentMailClient using a DSL builder for configuration. ### Parameters #### Request Body - **apiKey** (String) - Optional - The API key for authentication. - **baseUrl** (String) - Optional - The base URL for the API. - **timeout** (TimeoutBuilder) - Optional - Configuration for connect, request, and socket timeouts. - **retry** (RetryBuilder) - Optional - Configuration for retry behavior including max retries and server error handling. ``` -------------------------------- ### Configure AgentMailClient in Kotlin Source: https://context7.com/mattbobambrose/agentmail4k/llms.txt Initialize the AgentMailClient with API key, base URL, timeouts, and retry settings. Reads AGENTMAIL_API_KEY from environment if not explicitly provided. Ensure the client is closed when no longer needed. ```kotlin import com.agentmail4k.sdk.AgentMailClient import kotlin.time.Duration.Companion.seconds // Simple initialization (reads AGENTMAIL_API_KEY from environment) val client = AgentMailClient() // Full configuration with DSL val client = AgentMailClient { apiKey = "your-api-key" baseUrl = "https://api.agentmail.to" timeout { connect = 10.seconds request = 30.seconds socket = 30.seconds } retry { maxRetries = 3 retryOnServerErrors = true } } // Always close the client when done client.close() ``` -------------------------------- ### InboxResource Operations Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Operations for managing inboxes including list, create, get, update, and delete. ```kotlin /** Provides operations for managing inboxes: list, create, get, update, and delete. */ class InboxResource { /** Lists inboxes with optional pagination. */ suspend fun list(block: ListInboxesBuilder.() -> Unit = {}): InboxList /** Creates a new inbox. */ suspend fun create(block: CreateInboxBuilder.() -> Unit = {}): Inbox /** Retrieves an inbox by ID. */ suspend fun get(inboxId: String): Inbox /** Updates an inbox by ID. */ suspend fun update(inboxId: String, block: UpdateInboxBuilder.() -> Unit): Inbox /** Deletes an inbox by ID. */ suspend fun delete(inboxId: String) } ``` -------------------------------- ### Basic Webhook Handler Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt The SDK includes a basic webhook handler that verifies signatures and routes events. Ensure `signingSecret` is set for automatic verification. ```kotlin --8<-- "Webhooks.kt:webhook-handler" ``` -------------------------------- ### Create a Draft in Kotlin Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/drafts.md Initializes a new draft message within the system. ```kotlin --8<-- "Drafts.kt:create-draft" ``` -------------------------------- ### Monitor Inbox Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Configures and starts a coroutine to poll an inbox for new messages with custom handlers. ```APIDOC ## AgentMailClient.monitor ### Description Starts a coroutine that polls an inbox for new messages and invokes handlers based on the MonitorBuilder configuration. ### Parameters #### Path Parameters - **inboxId** (String) - Required - The unique identifier of the inbox to monitor. #### Request Body (MonitorBuilder) - **pollInterval** (Duration) - Optional - Frequency of polling. - **includeSpam** (Boolean) - Optional - Whether to include spam messages. - **includeBlocked** (Boolean) - Optional - Whether to include blocked messages. - **onMessage** (Function) - Optional - Handler for new message previews. - **onFullMessage** (Function) - Optional - Handler for full message content. - **onError** (Function) - Optional - Handler for polling errors. ``` -------------------------------- ### List Webhooks Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/webhooks.md Retrieves a list of all configured webhooks. ```kotlin --8<-- "Webhooks.kt:list-webhooks" ``` -------------------------------- ### Manage Webhooks with Kotlin Source: https://context7.com/mattbobambrose/agentmail4k/llms.txt Shows how to configure webhooks to receive real-time notifications for specific email events. ```kotlin import com.agentmail4k.sdk.AgentMailClient import com.agentmail4k.sdk.model.WebhookEvent suspend fun manageWebhooks() { val client = AgentMailClient() // Create a webhook with specific events val webhook = client.webhooks.create { url = "https://myapp.com/webhooks/email" events( WebhookEvent.MESSAGE_RECEIVED, WebhookEvent.MESSAGE_SENT, WebhookEvent.MESSAGE_DELIVERED, WebhookEvent.MESSAGE_BOUNCED ) } println("Created webhook: ${webhook.webhookId}") // List all webhooks val webhooks = client.webhooks.list { limit = 10 } webhooks.webhooks.forEach { w -> println("${w.webhookId}: ${w.url}") println(" Events: ${w.events}") } // Update webhook URL and events val updated = client.webhooks.update(webhook.webhookId) { url = "https://myapp.com/webhooks/v2/email" events( WebhookEvent.MESSAGE_RECEIVED, WebhookEvent.MESSAGE_BOUNCED, WebhookEvent.MESSAGE_COMPLAINED, WebhookEvent.DOMAIN_VERIFIED ) } // Delete webhook client.webhooks.delete(webhook.webhookId) client.close() } ``` -------------------------------- ### Get an Inbox Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/inboxes.md Fetch details for a specific inbox using its unique identifier. This is useful for retrieving the current state or configuration of an inbox. ```kotlin --8<-- "Inboxes.kt:get-inbox" ``` -------------------------------- ### Allow a Domain Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/lists.md Adds a specific domain to the allow list. ```kotlin --8<-- "Lists.kt:allow-domain" ``` -------------------------------- ### Set Up Automatic Email Replies Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/workflows.md Configure automatic replies using pattern-matching rules. Rules are evaluated in order, and the first matching rule handles the message. A default reply is used if no rule matches. ```kotlin autoReply(default = "Thank you for your email.") { rule("Re:", "I will get back to you soon.") rule("Out of Office", "I am currently out of the office.") } ``` -------------------------------- ### Verify a Domain Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/domains.md Confirms domain ownership after DNS records have been configured. ```kotlin --8<-- "Domains.kt:verify-domain" ``` -------------------------------- ### Manage Email Drafts with Kotlin Source: https://context7.com/mattbobambrose/agentmail4k/llms.txt Demonstrates creating, listing, updating, sending, and deleting email drafts within a specific inbox. ```kotlin import com.agentmail4k.sdk.AgentMailClient suspend fun manageDrafts() { val client = AgentMailClient() val inboxId = "inbox_abc123" val draftsResource = client.inboxes(inboxId).drafts // Create a draft val draft = draftsResource.create { to = listOf("recipient@example.com") subject = "Draft: Project Proposal" text = "Initial draft content..." } println("Created draft: ${draft.draftId}") // List all drafts val drafts = draftsResource.list { limit = 20 ascending = false } // Update draft content val updated = draftsResource.update(draft.draftId) { subject = "Updated: Project Proposal" text = "Revised draft content with more details..." html = "Revised content...
" cc = listOf("manager@example.com") } // Get a specific draft val retrieved = draftsResource.get(draft.draftId) // Send the draft as an email val sendResponse = draftsResource.send(draft.draftId) { labels = listOf("sent", "proposal") } println("Sent message: ${sendResponse.messageId}") // Delete a draft draftsResource.delete(draft.draftId) client.close() } ``` -------------------------------- ### Inbox Scope Access Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Use `client.inboxes(inboxId)` to get a scoped view of an inbox's resources, useful for performing multiple operations on the same inbox. ```kotlin --8<-- "ScopedAccess.kt:inbox-scope" ``` -------------------------------- ### Configure AgentMail API Key Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Set the API key via environment variable or pass it explicitly during client initialization. ```bash export AGENTMAIL_API_KEY="your-api-key" ``` ```kotlin --8<-- "GettingStarted.kt:create-client-env" ``` ```kotlin --8<-- "GettingStarted.kt:create-client-explicit" ``` -------------------------------- ### Pod Scope Access Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt Use `client.pods(podId)` to get a scoped view of a pod's resources, ideal for batch operations within a specific pod. ```kotlin --8<-- "ScopedAccess.kt:pod-scope" ``` -------------------------------- ### Webhook Handler Configuration Source: https://github.com/mattbobambrose/agentmail4k/blob/master/llms-full.txt DSL builder for configuring webhook event handlers with optional signature verification. ```APIDOC ## WebhookHandler ### Description Processes incoming webhook payloads with optional HMAC-SHA256 signature verification and event-specific handlers. ### Methods #### `webhookHandler(block: WebhookHandlerBuilder.() -> Unit): WebhookHandler` - **Description**: Creates a `WebhookHandler` using the DSL builder. - **Parameters**: - **block**: A lambda function that configures the `WebhookHandlerBuilder`. - `signingSecret` (string?) - Optional - The secret key for verifying webhook signatures. - `on(event: WebhookEvent, handler: suspend (JsonObject) -> Unit)` - Registers a handler for a specific webhook event. - `onMessageReceived(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.received` event. - `onMessageSent(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.sent` event. - `onMessageDelivered(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.delivered` event. - `onMessageBounced(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.bounced` event. - `onMessageComplained(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.complained` event. - `onMessageRejected(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `message.rejected` event. - `onDomainVerified(handler: suspend (JsonObject) -> Unit)` - Registers a handler for the `domain.verified` event. #### `verify(headers: MapThank you for your message. We'll get back to you shortly.
" } // Reply to all recipients client.replyAllToMessage(message) { text = "Please see my response below." } // Forward to new recipients client.forwardMessage(message) { to = listOf("manager@example.com", "team@example.com") cc = listOf("archive@example.com") subject = "FW: ${message.subject}" text = "Please review the forwarded message below." } client.close() } ``` -------------------------------- ### Manage List Entries Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/lists.md Endpoints for creating, retrieving, listing, and deleting entries within the allow/block lists. ```APIDOC ## POST /lists/block-sender ### Description Blocks a specific sender from sending emails. ### Method POST ### Endpoint /lists/block-sender ## POST /lists/allow-domain ### Description Allows a specific domain to send emails. ### Method POST ### Endpoint /lists/allow-domain ## GET /lists/entries ### Description Retrieves a list of all entries currently in the allow/block lists. ### Method GET ### Endpoint /lists/entries ## GET /lists/entry/{id} ### Description Retrieves details for a specific list entry. ### Method GET ### Endpoint /lists/entry/{id} ## DELETE /lists/entry/{id} ### Description Removes an entry from the allow/block list. ### Method DELETE ### Endpoint /lists/entry/{id} ``` -------------------------------- ### Monitor Inbox with Full Message Content Source: https://github.com/mattbobambrose/agentmail4k/blob/master/website/agentmail/docs/workflows.md Use `onFullMessage` instead of `onMessage` to receive complete message bodies when monitoring an inbox. ```kotlin monitor(intervalMillis = 1000, onFullMessage = true) { message -> println("New message body: ${message.body}") } ```