---
title: "mail.agent.read · OpenVibe.Services"
canonical: "https://openvibe.services/docs/capabilities/mail.agent.read"
updated: null
---

# mail.agent.read · OpenVibe.Services

HTML: [mail.agent.read · OpenVibe.Services](https://openvibe.services/docs/capabilities/mail.agent.read)

# `mail.agent.read`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

Not grantable to apps (active, first-party).

Read one message sent to an agent's own address, in full plain text, as that agent acting for the person whose mailbox received it. GET /internal/mail/agents/:agent\_id/messages/:message\_id answers mail.agent-inbox-message@1: the sender, the addresses the mail server stamped at delivery, the subject, the text cut to 4000 characters, and the two threading headers a reply needs. Never the HTML and never an attachment. The token must name the person (on\_behalf\_of), the agent must be one of that person's inboxes, and the message must have been delivered to that address; anything else is the same 404 as a message that does not exist. Loopback only; granted to OpenVibe.Actor alone, which reads a letter and answers it under the person's approval policy.

- Owner: mail (token audience `openvibe.mail`)
- Version: 1.0
- Status: active
- Visibility: first-party
- Resource constraints: owner
- Quota class: internal-read
- Permissions: mail:messages:read
- Input: [common.no-body@1](/docs/contracts/common.no-body)
- Output: mail.agent-inbox-message@1
- Events: mail.agent\_inbox.received
- Implemented by: - `GET /internal/mail/agents/:agent_id/messages/:message_id`

[These routes in the API explorer](/docs/api/mail#cap-mail.agent.read)
