> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r28.ai/charter/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Charter works for any HTTP API, including the user's own. The packs are examples of the result, not the limit: an API with no pack is declared the same way, following https://raw.githubusercontent.com/r28ai/charter/main/docs/.mintlify/skills/declaring-charter-tools/SKILL.md.
> Charter is for agents that act in customers' accounts: every call is checked field by field before it's sent, the app says whose account each call is for, and the same declarations list what each tool can reach. https://docs.r28.ai/charter/llms.txt says what it is and lists every page.

# messages_get

> Read one message: sender, recipients, subject, date and the body as plain text. Expand attachments or extended properties with expand.

GET`https://graph.microsoft.com/v1.0/me/messages/{messageId}`

```python outlook_messages_get.py theme={null}
import asyncio

from charter.packs import outlook

result = asyncio.run(outlook.messages_get.ainvoke({"messageId": ...}))
```

> [!NOTE]
>
> Requires `https://graph.microsoft.com/Mail.Read` or `https://graph.microsoft.com/Mail.ReadWrite`.

## Path parameters

| Field | Type | Description |
| - | - | - |
| `messageId` \* | `string` | The ID of the message. |

## Query parameters

| Field | Type | Description |
| - | - | - |
| `$select` | `string` | Use the $select query parameter to return a subset of properties for a resource. With $select, you can specify a subset or a superset of the default properties. For example, `from,subject` returns only the from and subject properties. |
| `$expand` | `string` | Use the $expand query string parameter to include the expanded resource or collection referenced by a single relationship (navigation property) in your results. `attachments` lists them. This is the one way to get an extended property: `singleValueExtendedProperties($filter=id eq 'String \{guid} Name Color')`, or `multiValueExtendedProperties(...)`for one that holds an array. Open extensions need a filter naming one too, or Graph answers 400:`extensions(\$filter=id eq 'com.contoso.roster')\`. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.