XIP-51: Agent messages

Authors: Naomi Plasterer (@nplasterer), Fabri Guespe (@humanagent)

Abstract

This XIP proposes several options for allowing senders to differentiate an agent’s message from a human’s message.

Motivation

With the growing popularity of agents (bots) on the internet, it may become commonplace for an agent to want to identify itself as an agent. This way, integrators can display agent messages differently in the UI making it clear that the person you are talking to isn’t a human. And if an agent is detected and it doesn’t identify itself as an agent, it can seem more untrustworthy to users.

Specification

Proposal 1: An agent message content type:

{
  authorityId: "xmtp.org"
  typeId: "agentMessage"
  versionMajor: 0
  versionMinor: 1
}

This would be the same as a text message where the fallback and content would be the same. In this way, even apps that don’t support displaying agentMessages differently would still see the messages correctly.

Proposal 2: An additional field set on all messages that enables an agent to self-identity as an agent upon message send. The value defaults to false if not set.

group.send("Gm I'm a bot", isAgent: true)

Proposal 3: Agent self-identification could happen upon client creation and not upon each message send. So instead, it would be:

client.create(signer, clientOptions {isAgent: true})
group.send("Gm I'm a bot")
client.isAgent?(message.sender) // returns true or false if the user who sent the message identifies as an agent

Taking this a step further, the protocol could enable agent self-identification at the identity level for the inboxId. This would make it easier for any other inbox to identify the inbox as an agent.

Backward compatibility

Clients encountering messages of this type must already be able to deal with messages of an unknown content type, so whatever considerations they’re making there should work here too.

Reference implementation

Security considerations

Can this feature be abused by a human acting as an agent? Or by an agent acting as a human that doesn’t choose to identify itself as an agent?

Copyright

Copyright and related rights waived via CC0.