> For the complete documentation index, see [llms.txt](https://specification.dm3.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://specification.dm3.network/base-protocol/message-transport-protocol-dm3mtp/appendix.md).

# Appendix

## Delivery Service

A Delivery Service is an RPC endpoint where a client can deliver its message (see API).

The delivery service

1. checks whether the message satisfies the recipient's spam policy (see ProfileExtension)
2. decrypts the envelope, adds a postmark, and stores the message encrypted for the recipient until the recipient picks it up.
3. if supported, notifies the receiver that there is a new message.

Delivery service nodes can be operated as a service or self-sovereign by the user. The protocol explicitly allows (see user profile) a user to point to multiple delivery services so that if one is not available, another can be used. However, delivery service nodes can also act as gateways to other protocols, services, or applications.

<figure><img src="/files/jIU8BAkf71FMr02Ot3cc" alt=""><figcaption></figcaption></figure>

### Gateway to other service

If a delivery service works as a gateway to another protocol or service, it must implement the API to receive dm3 messages. However, how it then processes the messages and delivers them to the ecosystem to which it is acting as a gateway is completely up to it and depends only on the service or protocol to which it is connecting.

A gateway can also provide multiple delivery service nodes as primary and fallback services.

<figure><img src="/files/apYkSPGBLie5TWfbEP03" alt=""><figcaption></figcaption></figure>

## Cross Chain Applications

Although the dm3 protocol is fundamentally designed to use ENS as a central registry, the protocol can also be implemented on other chains. Name services similar to ENS can be used as a local registry in the ecosystem of this chain. For the entire dm3 ecosystem, this local registry can be directly integrated via CCIP (Cross Chain Interoperability Protocol) (and vice versa) so that interoperability can be established. A complementary extension will further simplify the handling of names of such local registries by automatic mapping of top-level domains (see top-level alias at protocol extensions).

## RPC Error Codes

Default error codes are specified in the [JSON-RPC specification](https://www.jsonrpc.org/specification).

| Error code | Error text       | Description                                                                                           |
| ---------- | ---------------- | ----------------------------------------------------------------------------------------------------- |
| -32600     | Invalid Request  | The JSON sent is not a valid Request object.                                                          |
| -32601     | Method not found | The method does not exist / is not available.                                                         |
| -32602     | Invalid params   | Invalid method parameter(s).                                                                          |
| -32603     | Internal error   | Internal JSON-RPC error.                                                                              |
| -32700     | Parse error      | Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text. |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://specification.dm3.network/base-protocol/message-transport-protocol-dm3mtp/appendix.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
