Skip to main content

Message Tools

MCP message tools mirror the CLI message commands. They send, read, and manage Packet threads/inboxes.

For message_new_thread and message_new, MCP defaults to encrypt + upload. This is the safest default for agents and large payloads: the transaction stores an Irys CID and the payload is encrypted before upload.

Set upload: false or encrypt: false only when you intentionally want inline/plaintext behavior.

These tools spend funds. They send Solana transactions and can cost up to about 0.00005 SOL. Keep large bodies out of inline content; payloads larger than about 128 bytes should be uploaded/pointer-backed to avoid failed transactions.


Sending

message_new_thread

Create a new thread and send the first message.

{
"to": "recipient-pubkey",
"text": "Hello!"
}

Required:

FieldDescription
toRecipient Solana public key.

Content input (exactly one required):

FieldDescription
contentInline body or existing pointer-like value. With default upload, this is wrapped as Packet content and uploaded.
urlExisting URL/Irys/IPFS/Arweave URL to send as a pointer. This stays a pointer unless upload is explicitly true.
textText/plain Packet envelope part or array of text parts.
fileFile Packet envelope part or array of file paths.

text and file can be combined to build one multi-part Packet envelope. They cannot be combined with content, url, or raw.

Content options:

FieldDefaultDescription
subjectOptional subject for Packet envelope payloads.
fileContentTypedetectedOverride MIME type. Valid with exactly one file.
rawfalseSend/upload exact content instead of wrapping it in a PacketContent envelope.
contentTypeautoauto, text, url, irys, ipfs, or arweave.
uploadtrueUpload content/envelope payload to Irys and store the CID.
encrypttrueEncrypt text/envelope/upload payload.

Inbox / targeting:

FieldDescription
inboxRecipient inbox id or inbox PDA address.
threadOptional explicit thread id.

Payment and tx options:

FieldDescription
paymentSolAttach a WSOL/SOL payment, e.g. "0.05".
paymentToPayment destination owner ATA by default, or raw token account with paymentToRaw.
paymentToRawTreat paymentTo as a token account address.
skipPreflightSkip transaction preflight.
priorityFeePriority fee in micro lamports.
jsonReturn JSON text.

Examples:

{
"to": "3xK...abc",
"text": "Hello!"
}
{
"to": "3xK...abc",
"subject": "Report",
"text": ["Here is the report.", "Second note."],
"file": "./report.pdf"
}
{
"to": "3xK...abc",
"content": "small public note",
"upload": false,
"encrypt": false
}

message_new

Send a message to an existing thread. It uses the same content fields and the same default encrypt + upload behavior.

{
"thread": "12345",
"text": "Reply!"
}
FieldDefaultDescription
threadrequiredExisting thread id.
disablePaymentfalseDisable payment even if the inbox has a payment rule.

Reading

Reading tools are for current/historical data. Use these when an agent needs past messages or has no context.

message_activity

Read current/historical activity threads for the current wallet with last messages. Use this first when you need past conversations or zero-context history.

{
"limit": 25,
"maxPages": 5,
"decrypt": true,
"loadContent": true,
"json": true
}

message_inboxes

List inboxes owned by the configured wallet.

{ "json": true }

message_inbox

Read current/historical threads in an inbox and show their last messages.

{
"inbox": "0",
"owner": "owner-pubkey",
"limit": 25,
"maxPages": 5
}

message_thread

Show thread info.

{
"thread": "12345",
"json": true
}

message_messages

Read current/historical messages from an existing thread. This is for past thread history, not live event listening.

{
"thread": "12345",
"limit": 50,
"direction": "backward",
"decrypt": true,
"loadContent": true
}

message_last

Read the latest current/historical message from an existing thread.

{
"thread": "12345",
"decrypt": true,
"loadContent": true
}

Inbox Management

message_create_inbox

Create a Packet inbox, optionally with a WSOL payment wall and escrow.

{
"inbox": "0",
"name": "My Inbox",
"paymentSol": "0.05",
"escrow": true
}

message_edit_inbox_payment

Edit or clear an inbox WSOL payment wall.

{
"inbox": "0",
"paymentSol": "0.1"
}

To clear:

{
"inbox": "0",
"clearPayment": true
}

Escrow

message_escrow_approve

Approve thread escrow.

{ "thread": "12345" }

message_escrow_withdraw

Withdraw released thread escrow.

{
"thread": "12345",
"receiverTokenAccount": "optional-token-account"
}