Personal account

Login, reading, search, files, sending, archive and your account settings.

This reference covers personal-account commands. Use it to find the exact command, arguments and options for login, reading, searching, files and sending.

Login, reading, search, files, sending, archive and your account settings.

Global options

Apply to every command.

OptionPurpose
-V, --versionoutput the version number.
-v, --verbosemore detail in what is shown: -v ids, -vv everything we know. Default: 0.
--jsonmachine-readable output: one JSON value on stdout, nothing else.
--jsonlmachine-readable output: one JSON object per line, for streaming and jq.
--quietdiagnostics off.
--traceone line per request on stderr: ids and timings, never message content.
--timeout <duration>give up on the whole command after this — 30s, 2m, 500ms.
--offlineanswer from what was recorded and never connect; fails if nothing was.
--no-inputnever prompt or open interactive login; piped input remains available.
--max-input-bytes <bytes>maximum buffered input bytes (default: 16777216).
--max-output-bytes <bytes>maximum machine output bytes (default: 4194304; 0 disables).
--fields <paths>comma-separated item or object fields: id,text; preserve pagination and operation ids.
--dry-runpreview parsed arguments and permissions before running the action.
--yesgo ahead without the question an ask level puts before a write.
--recordkeep this run under max runs — ids and timings, never message content.
--no-recorddo not keep it, whatever the configuration says.
--servestart max serve in the background if it is not running (the default).
--no-servedo not start it; log in on this command's own connection unless one is running.

Commands

max session

the stored MAX session for this profile

max session start

log this profile in to MAX

max session start [method]
ArgumentRequirementMeaning
methodoptionaltoken (pasted or piped), qr, qr-chrome or sms. One of: token, qr, qr-chrome, sms. Default: token.

max session end

log this profile out on MAX's side and forget the session here

Changes something in MAX.

max session end

max setup

set up your personal MAX account and connect your agent

Changes something in MAX.

max setup [options]
OptionPurpose
--agent <agent>install the skill for this agent; asks at a terminal, otherwise none. One of: none, codex, cursor, claude, gemini, all.
--method <method>how to log in when there is no session. One of: token, qr, qr-chrome, sms. Default: qr.

max account

the logged-in account

max account list

every profile on this computer, and the account each is logged in as; asks the messenger nothing

max account list

max account show

who this profile is logged in as; the phone number shows its last four digits

max account show [options]
OptionPurpose
--show-phoneprint the whole phone number.

max account update

change the name, the description or the photo everyone sees on your profile

Changes something in MAX.

max account update [options]
OptionPurpose
--first-name <name>your first name.
--last-name <name>your last name.
--description <text>about you.
--photo <file>a new profile photo — an image file.

max account sessions

where else this account is logged in — not max session, which is this tool's own login

max account sessions list

every device and app logged in to this account; nothing is ended

max account sessions list

max account sessions end

log out every other device, your phone included; this one stays

Changes something in MAX.

max account sessions end [options]
OptionPurpose
--othersevery session but this one.

max account privacy

who may find, call or add the account

max account privacy show

the account's privacy settings; reading changes nothing

max account privacy show

max account privacy set

change who may find, call or add the account; the settings not named stay

Changes something in MAX.

max account privacy set [options]
OptionPurpose
--find-by-phone <who>who finds the account by its number: everyone, contacts or nobody.
--phone-number <who>who sees the number: everyone, contacts or nobody.
--calls <who>who may call: everyone, contacts or nobody.
--chat-invites <who>who may add the account to groups and channels: everyone, contacts or nobody.
--hide-online <on|off>hide online status and last seen.

max calls

the account's calls

max calls list

calls made and received, newest first; reading changes nothing

max calls list [options]
OptionPurpose
--limit <n>how many to show.

max stickers

the stickers the account has added

max stickers list

sticker sets, or with --set the stickers in one; reading changes nothing

max stickers list [options]
OptionPurpose
--set <id>the stickers in this set.

max chats

the chats this account is in

max chats list

chats, newest first, archived ones included

max chats list [options]
OptionPurpose
--limit <n>how many to show.
--page <n>which page, starting at 1.
--allevery row, no paging.
--search <text>only chats whose name contains this; at least 3 characters.
--kind <kind>only chats of this kind: dialog, group, channel, saved.
--unreadonly chats with unread messages.

max chats show

one chat: its kind, unread count, last message time and who is in it

max chats show <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats events

who joined, left, was added or removed, and by whom — from the chat's service messages

max chats events <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--since-time <time>ISO 8601, or 2h / 1d ago; 7 days ago if not given.
--type <names>only these, comma-separated: join, leave, add, remove, create, title, pin.

max chats inspect

what an invite or public link leads to, without joining it

max chats inspect <link>
ArgumentRequirementMeaning
linkrequiredan invite link or a public one.

max chats join

join a group or channel by its link; the others in it see that you joined

Changes something in MAX.

max chats join <link>
ArgumentRequirementMeaning
linkrequiredan invite link, or a public one.

max chats mark-read

mark a chat read; the other side sees that you read it

Changes something in MAX.

max chats mark-read <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--until <message>only up to this message id; the newest by default.
--topic <id>mark only this forum topic read; unsupported by messengers without topics.

max chats leave

leave a group or channel; the others in it see that you left

Changes something in MAX.

max chats leave <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats tracking

the chats whose member lists serve fetches daily into the local store — chats members fetch --track adds one

max chats tracking list

every tracked chat: since when, and its last member count

max chats tracking list

max chats tracking show

one chat: whether it is tracked, and its member count per day for the last 30 days

max chats tracking show <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats tracking add

fetch this chat's member list daily while serve runs, from its next run

max chats tracking add <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats tracking remove

stop fetching it daily; the history already kept stays

max chats tracking remove <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats folders

your chat folders

max chats folders list

your chat folders, in the order the app shows them

max chats folders list

max chats folders show

one chat folder, with the names of the chats in it

max chats folders show <folder>
ArgumentRequirementMeaning
folderrequiredthe folder's id, or its title exactly.

max chats folders create

create a chat folder

Changes something in MAX.

max chats folders create <title> [options]
ArgumentRequirementMeaning
titlerequiredthe folder's name; the app may refuse a long one.
OptionPurpose
--chat <chat>a chat to put in it, by id or name; repeat it for more.

max chats folders update

rename a folder, or change which chats are in it

Changes something in MAX.

max chats folders update <folder> [options]
ArgumentRequirementMeaning
folderrequiredfolder id, or its title exactly.
OptionPurpose
--title <title>a new name.
--add <chat>put a chat in it; repeat it for more.
--remove <chat>take a chat out of it, and off its excluded and pinned lists; repeat it for more.

max chats folders delete

delete a folder; the chats in it stay

Changes something in MAX.

max chats folders delete <folder>
ArgumentRequirementMeaning
folderrequiredfolder id, or its title exactly.

max chats folders order

put the named folders in this order after All chats, which remains first; folders not named follow in their existing relative order

Changes something in MAX.

max chats folders order <folders>
ArgumentRequirementMeaning
foldersrequiredfolder IDs or exact titles, in the desired order.

max chats rules

what chats moderate judges a group by, kept in a file of this profile

max chats rules show

the group's rules; the defaults, marked not saved, if it has none yet

max chats rules show <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats rules set

change one rule; the group's first change writes every rule with its default

Changes something on this computer only.

max chats rules set <chat> <key> <value>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
keyrequiredone of: trusted, blocked, blockedNames, links, invites, forwards, blockedPeople, flood.messages, flood.minutes, flood.action, newAccount.days, newAccount.action, consent.delete, consent.remove.
valuerequiredthe new value; a list is comma-separated.

max chats rules unset

put one rule back to its default

Changes something on this computer only.

max chats rules unset <chat> <key>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
keyrequiredone of: trusted, blocked, blockedNames, links, invites, forwards, blockedPeople, flood.messages, flood.minutes, flood.action, newAccount.days, newAccount.action, consent.delete, consent.remove.

max chats media

a chat's photos, videos, files, audio and links, from the messenger's server; reading marks nothing

max chats media <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--type <names>only these kinds, comma-separated: photo, video, file, audio, link.
--limit <n>how many to show.
--before-id <id>read what came before this message id.

max chats mute

stop notifications from a chat, for good or until a time; nobody in it is told

Changes something in MAX.

max chats mute <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--until <time>only until then: 2026-09-25T09:00 (local time), or 30m, 2h, 7d from now.

max chats unmute

hear a muted chat again

Changes something in MAX.

max chats unmute <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max chats clear

delete every message in a chat for this account; the others in it keep theirs

Changes something in MAX.

max chats clear <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--allow-dangerousgo ahead without the question an ask level puts before a deletion.

max chats start

start a bot, as its Start button does; the bot sees that you started it

Changes something in MAX.

max chats start <bot> [options]
ArgumentRequirementMeaning
botrequiredthe chat with the bot — its id or its name — or the bot's link, even one never opened.
OptionPurpose
--payload <text>the start parameter the bot reads; a link's own ?start= when not given.

max chats app

the address that opens a bot's mini app, signed in as you — keep it to yourself

Changes something in MAX.

max chats app <bot> [options]
ArgumentRequirementMeaning
botrequiredthe chat with the bot: its id or its name.
OptionPurpose
--start <param>the start parameter the app reads.

max contacts

people you have a one-to-one chat with

max contacts list

people you have a one-to-one chat with

max contacts list [options]
OptionPurpose
--limit <n>how many to show.
--page <n>which page, starting at 1.
--allevery row, no paging.
--order <recent|name>newest conversation first, or alphabetical. Default: recent.
--search <text>only people whose name, local alias or @username contains this.
--search-notes <text>only people whose private notes contain this text.

max contacts show

one person and the chats you share with them

max contacts show <person> [options]
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name.
OptionPurpose
--with-notesinclude your private notes, subject to contacts.notes.list permission.

max contacts profile

everything the messenger says about one person — handles, flags, last seen, when they registered — and how many of their messages the store holds in each chat you share, the first and the last, and the earlier names and usernames the store saw them with

max contacts profile <person> [options]
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name.
OptionPurpose
--show-phoneprint the whole phone number.

max contacts alias

a private local display name in the selected account

max contacts alias set

Changes something on this computer only.

max contacts alias set <person> <alias>
ArgumentRequirementMeaning
personrequired
aliasrequired

max contacts alias rm

Changes something on this computer only.

max contacts alias rm <person>
ArgumentRequirementMeaning
personrequired

max contacts notes

your private notes on a stored contact, the same in every account that sees them

max contacts notes list

max contacts notes list <person>
ArgumentRequirementMeaning
personrequired

max contacts notes show

max contacts notes show <person> <id>
ArgumentRequirementMeaning
personrequired
idrequired

max contacts notes add

Changes something on this computer only.

max contacts notes add <person> [options]
ArgumentRequirementMeaning
personrequired
OptionPurpose
--file <path>read note text from a file; omitted or - reads stdin.

max contacts notes edit

Changes something on this computer only.

max contacts notes edit <person> <id> [options]
ArgumentRequirementMeaning
personrequired
idrequired
OptionPurpose
--file <path>read note text from a file; omitted or - reads stdin.
--revision <number>the revision you read before editing.

max contacts notes remove

Changes something on this computer only.

max contacts notes remove <person> <id>
ArgumentRequirementMeaning
personrequired
idrequired

max contacts sync

forget where the last sync left off and take the whole list again

max contacts sync

max contacts lookup

who MAX has under a phone number — asks for it, or reads it from stdin

max contacts lookup

max contacts add

add a person to your contacts — contacts list still shows only people you have a dialog with

Changes something in MAX.

max contacts add <person>
ArgumentRequirementMeaning
personrequiredperson id — contacts lookup finds one — or part of a known name.

max contacts remove

remove a person from your contacts; the chat stays, a name you gave them may not

Changes something in MAX.

max contacts remove <person>
ArgumentRequirementMeaning
personrequiredperson id — contacts lookup finds one — or part of a known name.

max contacts block

stop a person from writing to you — they need not be a contact

Changes something in MAX.

max contacts block <person>
ArgumentRequirementMeaning
personrequiredperson id — contacts lookup finds one — or part of a known name.

max contacts unblock

let a blocked person write to you again

Changes something in MAX.

max contacts unblock <person>
ArgumentRequirementMeaning
personrequiredperson id — contacts lookup finds one — or part of a known name.

max contacts rename

rename the contact in the messenger address book; use contacts alias for a private local name

Changes something in MAX.

max contacts rename <person> <first-name> [last-name]
ArgumentRequirementMeaning
personrequiredperson id — contacts lookup finds one — or part of a known name.
first-namerequiredthe name you want to see for them.
last-nameoptional

max contacts import

upload phone numbers and add the people the messenger has under them

Changes something in MAX.

max contacts import <file>
ArgumentRequirementMeaning
filerequiredone person per line: number, then a comma, a tab or a semicolon, then the name.

max contacts context

what the store holds about one person, in every messenger linked to them: shared chats, the last messages each way, their recent messages, where others mentioned them — never connects

max contacts context <person> [options]
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name.
OptionPurpose
--limit <n>at most this many messages in each list; 10 if not given.
--since-time <time>nothing older than this ISO 8601 time, or 2h / 1d ago.
--chat <chat>a chat, by id or name; repeat it for more — then their newest messages in each, 20 unless --limit, short unless -v.
--refreshwith --chat, read their newest messages in each from the messenger first.

max contacts check

whether one person looks like a bot, a fake or a spammer: their profile and what they wrote in the store — a hint, never a verdict; the public ban lists cover Telegram only, so nothing is sent

max contacts check <person> [options]
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name.
OptionPurpose
--no-registriesdo not ask the public ban lists; nothing about them leaves this machine.

record that two people in the store are one person — the same name is never enough

max contacts link <person> <other>
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name.
otherrequiredthe same in another messenger of the store, as : — max:Ana.

undo contacts link for one identity: it is a person of its own again

max contacts unlink <person>
ArgumentRequirementMeaning
personrequiredtheir id, @username, or part of their name; : for another messenger.

max messages

read and send messages in a chat

max messages list

a chat's messages, oldest to newest

max messages list <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--limit <n>how many.
--before-id <id>only messages older than this message id.
--before-time <time>only messages older than this ISO 8601 time, or 2h / 1d ago.
--after-id <id>only messages newer than this message id.
--after-time <time>only messages newer than this ISO 8601 time, or 2h / 1d ago.
--transcribeturn voice messages not heard yet into text — by the messenger, or a model on this machine; can take minutes.
--model <id>which downloaded speech model hears them, with --transcribe; models audio list shows them.
--mark-readalso mark the chat read up to the newest message shown; the other person sees it.

max messages show

one message, by its chat and id or by its msg: locator

max messages show <chat> [message]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title; or a msg: locator, with no message id after it.
messageoptionalthe message id.

max messages context

a message and what came either side of it, oldest first

max messages context <chat> [message] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title; or a msg: locator, with no message id after it.
messageoptionalthe message id.
OptionPurpose
--threadthe stored reply chain and replies instead of time neighbours; falls back when no graph exists.
--thread-hops <n>at most this many links from the hit (default: 8).
--thread-messages <n>at most this many messages in each thread context (default: 50).
--thread-bytes <n>at most this many bytes of whole messages and links in each context (default: 65536).
--thread-within <duration>messages within this long either side of the hit (default: 1d).
--before-n <n>how many before it. Default: 5.
--after-n <n>how many after it. Default: 5.

why a message is in its conversation: each link it has, and the chain of answers back to the start

max messages links <chat> <message>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe message id.

a message permalink when supported, and its account-scoped locator

max messages link <chat> [message]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title; or a msg: locator, with no message id after it.
messageoptionalthe message id.

max messages download

save a message's photos, files, videos and voice notes to a folder — or a whole chat's with --all

max messages download <chat> [message] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messageoptionalthe message id; left out with --all.
OptionPurpose
--output-dir <dir>where to save them; created if missing. Default: ..
--allevery file of the chat, newest first; run it again to continue where it stopped.
--pause <duration>with --all, a pause between pages, to stay under the provider's limits. Default: 5s.
--extractread text layers from the files this download maps into the local content index.
--output <dir>compatibility alias for --output-dir.

max messages evidence

a bounded evidence packet from stored messages, newest first

max messages evidence <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--limit <n>how many, 1–100.
--before-id <id>only messages older than this message id.

max messages transcribe

turn a voice message into text, on this machine — the recording goes nowhere

max messages transcribe <chat> <message> [options]
ArgumentRequirementMeaning
chatrequiredchat id, or part of a chat name.
messagerequiredid of a voice message.
OptionPurpose
--model <id>which downloaded speech model to use; max models audio list shows them.

max messages send

send a text message; without [text], the text is read from stdin

Changes something in MAX.

max messages send <chat> [text] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
textoptionalthe message.
OptionPurpose
--topic <id>send to this forum topic; unsupported by messengers without topics.
--reply-to <message>answer this message, by its id in the same chat.
--send-as <id>post as one of the identities chats send-as lists; required where the chat posts as someone else by default.
--send-id <id>repeat a send whose outcome was unknown, without risking a second copy.
--silentdeliver without a notification.
--no-previewno preview card for a link in the text.
--mdread this messenger's Markdown; see its formatting guide for supported syntax.
--file <file>attach a file; the text becomes its caption.
--photo <file>attach a .jpg, .png or .webp as a photo; the text becomes its caption.
--as-filesend the --file as a file to download, a video included.
--voice <file>send an Ogg Opus file as a voice message, alone, with no text.
--allow-any-filesend a file even from a hidden folder, ~/.ssh or this CLI's own folders.
--at-time <time>let the messenger send it later, even with this machine off: 2026-09-25T09:00 (local time), or 30m, 2h, 1d from now.
--sticker <id>send this sticker, alone; stickers list finds its id.

max messages scheduled

messages waiting to be sent later in a chat, soonest first; cancel one in the app

max messages scheduled <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max messages edit

change the text of your own message; the other side may have read it already

Changes something in MAX.

max messages edit <chat> <message> [text] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe id of your own message.
textoptionalthe new text; without it, read from stdin.
OptionPurpose
--mdread this messenger's Markdown; see its formatting guide for supported syntax.

max messages delete

delete messages for you only; with --for-everyone, for everyone in the chat

Changes something in MAX.

max messages delete <chat> <messages> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagesrequiredthe message ids, at most 10.
OptionPurpose
--for-everyonedelete for everyone in the chat, not only for you — they cannot get it back.
--allow-dangerousgo ahead without the question an ask level puts before a deletion.

max messages forward

forward one message to another chat

Changes something in MAX.

max messages forward <chat> <message> [options]
ArgumentRequirementMeaning
chatrequiredthe chat the message is in: a chat: its id, or part of its title.
messagerequiredthe message id.
OptionPurpose
--to <chat>where it goes: a chat: its id, or part of its title.
--silentdeliver it without a notification.
--send-as <id>post as one of the identities chats send-as lists for the --to chat; required where the chat posts as someone else by default.
--send-id <id>repeat a forward whose outcome was unknown, without risking a second copy.

max messages pin

pin a message in a chat, quietly unless --notify

Changes something in MAX.

max messages pin <chat> <message> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe message id.
OptionPurpose
--notifytell the chat's members about the pin.

max messages unpin

unpin a message in a chat

Changes something in MAX.

max messages unpin <chat> <message>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe message id.

max messages press

press a bot's button under a message; the bot sees that you pressed it

Changes something in MAX.

max messages press <chat> <message> <button>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe id of the message with the buttons.
buttonrequiredits number as messages show prints it, or its exact text.

max store

the local store of messages

max store status

per chat: messages stored, the oldest and newest, and the stretches held completely

max store status [chat]
ArgumentRequirementMeaning
chatoptionala chat: its id, or part of its title.

max store fetch

fetch a chat's history into the local store, newest first; run it again to continue; --all fetches every chat

max store fetch [chat] [options]
ArgumentRequirementMeaning
chatoptionala chat: its id, or part of its title.
OptionPurpose
--allevery chat, most recently active first — what search needs; the last 90d unless --since-time or --last.
--limit <n>at most this many messages in this run, per chat with --all; 1200 if not given.
--page-size <n>how many messages one request asks for; 30 if not given.
--pause <duration>the least pause between pages, to stay under the provider's limits; each is up to twice that. Default: 5s.
--since-time <time>stop once it reaches messages older than this: ISO 8601, or 2h / 1d ago.
--last <n>stop once the newest n messages are held.
--catch-upprepare local search after fetch; overrides searchCatchUp.
--no-catch-upskip local preparation after this fetch.
--catch-up-chunks <n>at most this many local vector chunks.
--catch-up-messages <n>skip a graph rebuild larger than this many messages.
--catch-up-time <duration>local preparation time budget, 30s by default.
--backgroundrun as a job that outlives this command; store jobs show follows it.
--estimateonly estimate how many messages, requests and minutes a full fetch would still take — from the store, no request.

max store gaps

inspect recorded interior coverage gaps and explicitly fetch them

max store gaps plan

local coverage plan; missing message ids alone do not imply missing history

max store gaps plan <chat>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.

max store gaps repair

fetch bounded interior gaps and recheck coverage; never delete unseen messages

max store gaps repair <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--limit <n>total messages in this repair, 500 by default.
--max-gaps <n>at most this many gaps, 5 by default.
--repair-time <duration>time budget for the repair, 30s by default. Default: 30s.
--page-size <n>messages per provider page.
--pause <duration>provider pause between pages. Default: 5s.
--fingerprint <hash>refuse if this previously inspected coverage plan changed.
--catch-upprepare local search after repair; overrides searchCatchUp.
--no-catch-upskip local search preparation after repair.
--catch-up-chunks <n>maximum local chunks prepared.
--catch-up-messages <n>maximum stored messages read for preparation.
--catch-up-time <duration>preparation time within the repair's remaining budget.
--backgroundrepair as an existing store job; inspect store jobs show.

max store jobs

background fetch jobs

max store jobs list

background fetch jobs, newest first

max store jobs list [options]
OptionPurpose
--state <state>only jobs in this state. One of: running, done, failed, cancelled, died.

max store jobs show

one background job — the newest when none is named — and what the store now holds of its chat

max store jobs show [job]
ArgumentRequirementMeaning
joboptionalthe job id store fetch --background printed.

max store jobs cancel

stop a running background job after its current page; a later fetch resumes where it stopped

max store jobs cancel <job>
ArgumentRequirementMeaning
jobrequiredthe job id.

max store jobs retry

start a failed or died job again, as a new job; the fetch resumes where the store stopped

max store jobs retry [job] [options]
ArgumentRequirementMeaning
joboptionalthe job id.
OptionPurpose
--failedevery chat whose newest job failed or died.

max store jobs clear

forget finished jobs and remove their logs; a running job is kept

Changes something on this computer only.

max store jobs clear

max store export

a chat's stored messages as JSON lines, oldest first; never asks the messenger

max store export [chats] [options]
ArgumentRequirementMeaning
chatsoptionala chat: its id, or part of its title; several with --to.
OptionPurpose
--format <format>jsonl (the default): one message per line; markdown: a transcript with a heading per day, replies and forwards quoted.
--since-time <time>only from this ISO 8601 time, or 30m / 2h / 1d ago, on.
--output <file>write JSON lines, or the transcript, to this new file, readable only by you.
--to <dir>write into this folder, a file per chat and a manifest; run again on it for only what changed since.
--kind <kinds>with --to: every stored chat of these kinds, comma-separated: dialog, group, channel, saved.
--allwith --to: every stored chat of this account.
--encryptcompress and encrypt with a password, typed at a hidden prompt or piped on stdin; it is never kept — lose it and the file cannot be opened.

max store clear

delete from the store the chats this account has left, with their messages

max store clear [options]
OptionPurpose
--leftthe chats this account has left — the only thing this clears.
--allow-dangerousyes, delete — it cannot be undone, and a chat you left cannot be fetched again.

max store info

the store file: where it is, its size, its schema and how many rows it holds; changes nothing

max store info

max store check

whether the store is healthy — integrity, search indexes, disk, and which chats are behind

max store check

max store migrate

bring the store up to this build's schema, then normalize, index and stem the messages and notes stored before it

max store migrate

max store reindex

rebuild the word index, its typo vocabulary, the stems, the files' word index and the notes' indexes from what is stored; loses nothing

max store reindex

max store backup

copy the store into a new file, while it is in use; never overwrites a file

max store backup <file> [options]
ArgumentRequirementMeaning
filerequiredthe new file.
OptionPurpose
--encryptcompress and encrypt with a password, typed at a hidden prompt or piped on stdin; it is never kept — lose it and the file cannot be opened.

max store restore

put a backup in place of the store; the store it replaces is kept beside it, never deleted

max store restore <file>
ArgumentRequirementMeaning
filerequireda file store backup wrote; one written with --encrypt asks for its password.

max store decrypt

open a file written with --encrypt into a new file; asks for its password

max store decrypt <file> [options]
ArgumentRequirementMeaning
filerequireda file store backup --encrypt or store export --encrypt wrote.
OptionPurpose
--output <file>the new file, readable only by you.

max store repair

bring every table to this build's shape, deleting nothing: a table of the wrong shape is kept as a copy beside a new one

max store repair [options]
OptionPurpose
--dry-runsay what it would do, and change nothing.

max store copies

the tables store repair kept as copies

max store copies delete

delete one copy store repair kept, named exactly; refuses any other table

max store copies delete <name>
ArgumentRequirementMeaning
namerequiredthe copy's name, as store repair printed it.

max stats

statistics about messages, chats and their authors

max stats messages

message statistics from the local store

max stats messages show

how many stored messages match, by chat, sender, day or hour — the local store only; optionally fetches new messages with --sync-first

max stats messages show [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query, as for search messages; none counts every stored message; with --saved, more words AND-ed to it.
OptionPurpose
--sync-firstfirst fetch new messages within the chat, time and message bounds.
--max-chats <n>refresh at most this many chats (default: 5).
--sync-time <duration>stop fetching after this long (default: 30s).
--max-messages <n>fetch at most this many messages total (default: 500).
--by <chat|sender|day|hour>what to count by (default: chat).
--chat <chat>only this chat — the same as chat: in the query; a chat: its id, or part of its title.
--source <messenger>every account of this messenger held in the store; personal, bots or all — the same as in: in the query.
--limit <n>how many rows.
--timezone <zone>the IANA timezone for calendar days and hours.
--exactbare words and quotes match their exact form only, as exact:word does; text: still matches every form.
--saved <name|id>count what a saved search or an earlier run matches; options typed here replace its own.

max stats messages counters

per-counter observations and bounded remote refresh

max stats messages counters show

show saved counter values and their observation freshness

max stats messages counters show [query] [options]
ArgumentRequirementMeaning
queryoptionalstrict Lucene query over stored messages.
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>held accounts of this messenger; refresh uses the active account.
--exactbare words match exact forms.
--timezone <zone>IANA timezone for query dates.
--selection <json>pinned counter-targets selection from counters show; conflicts with query and scope.
--counters <names>distinct views,reactions,comments fields; all three by default.
--limit <n>messages, 1–100; 20 by default.
--max-age <duration>maximum fresh observation age; 24h by default.

max stats messages counters refresh

read authoritative counters for bounded messages and update their local observations

Changes something on this computer only.

max stats messages counters refresh [query] [options]
ArgumentRequirementMeaning
queryoptionalstrict Lucene query over stored messages.
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>held accounts of this messenger; refresh uses the active account.
--exactbare words match exact forms.
--timezone <zone>IANA timezone for query dates.
--selection <json>pinned counter-targets selection from counters show; conflicts with query and scope.
--counters <names>distinct views,reactions,comments fields; all three by default.
--limit <n>messages, 1–100; 20 by default.
--max-messages <n>maximum messages to refresh, 1–100.
--sync-time <duration>remote refresh budget; 30s by default, maximum 5m.
--dry-runpreview exact stored targets and counter capabilities without connecting.

max stats messages unanswered

oldest detected questions without an observed qualifying explicit reply

max stats messages unanswered [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query; none selects every stored message.
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>every held account of this messenger; personal, bots or all.
--exactbare words match exact forms rather than stems.
--saved <name|id>run a saved report of this kind; typed report options replace stored options.
--timezone <zone>the IANA timezone for calendar date boundaries.
--limit <n>report rows, 1–100; 20 if not given.
--answerer <person>stored name, alias, @username, ID or person:provider/account/id; ambiguous names require a choice; repeat for more.
--older-than <duration>minimum age of a question without an observed qualifying answer.

max stats messages discussion

viewed posts with little recorded discussion

max stats messages discussion [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query; none selects every stored message.
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>every held account of this messenger; personal, bots or all.
--exactbare words match exact forms rather than stems.
--saved <name|id>run a saved report of this kind; typed report options replace stored options.
--timezone <zone>the IANA timezone for calendar date boundaries.
--limit <n>report rows, 1–100; 20 if not given.
--min-views <n>minimum known cumulative views.
--max-replies <n>maximum observed discussion replies.

max stats messages top

rank stored messages by a measure or explainable score; counters are snapshots with per-field observation freshness

max stats messages top [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query; none selects every stored message.
OptionPurpose
--sync-firstfirst fetch new messages within the chat, time and message bounds.
--max-chats <n>refresh at most this many chats (default: 5).
--sync-time <duration>stop fetching after this long (default: 30s).
--max-messages <n>fetch at most this many messages total (default: 500).
--measure <name>the ranking metric; not with score or weights. One of: views, reactions, forwards, comments, replies, thread-size.
--score <preset>helpful/active for authors; engaging for either target. One of: helpful, active, engaging.
--weights <json>the complete component weights; replaces preset weights.
--message-kind <kind>select proven all, posts or comments before ranking. One of: all, posts, comments.
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>every held account of this messenger; personal, bots or all.
--timezone <zone>the IANA timezone for dates and active days.
--exactbare words match exact forms rather than stems.
--limit <n>ranked rows, 1–100.
--saved <name|id>run a saved query or ranking run; typed options replace stored options.

max stats messages evidence

bounded messages, answer pairs or retention members from an exact drilldown selection

max stats messages evidence <message> [options]
ArgumentRequirementMeaning
messagerequiredthe canonical message locator, or retention cohort reference, from drilldown.
OptionPurpose
--selection <json>the resolved ranking selection returned in drilldown.
--component <name>the exposed ranking component.
--limit <n>evidence rows, 1–100; 20 if not given.
--cursor <cursor>continue the same component and stored-evidence fingerprint.

max stats contacts

statistics about human authors

max stats contacts responses

counts and median/p90 latency for selected human answering identities

max stats contacts responses [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query; none selects every stored message.
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>every held account of this messenger; personal, bots or all.
--exactbare words match exact forms rather than stems.
--saved <name|id>run a saved report of this kind; typed report options replace stored options.
--timezone <zone>the IANA timezone for calendar date boundaries.
--limit <n>report rows, 1–100; 20 if not given.
--answerer <person>stored name, alias, @username, ID or person:provider/account/id; ambiguous names require a choice; repeat for more.

max stats contacts top

rank the human authors of stored messages by a measure or explainable score; counters are snapshots with per-field observation freshness

max stats contacts top [query] [options]
ArgumentRequirementMeaning
queryoptionala strict Lucene query; none selects every stored message.
OptionPurpose
--sync-firstfirst fetch new messages within the chat, time and message bounds.
--max-chats <n>refresh at most this many chats (default: 5).
--sync-time <duration>stop fetching after this long (default: 30s).
--max-messages <n>fetch at most this many messages total (default: 500).
--measure <name>the ranking metric; not with score or weights. One of: messages, words, reactions, replies, answers, answer-time, threads, active-days.
--score <preset>helpful/active for authors; engaging for either target. One of: helpful, active, engaging.
--weights <json>the complete component weights; replaces preset weights.
--message-kind <kind>select proven all, posts or comments before ranking. One of: all, posts, comments.
--chat <chat>only this chat; a chat: its id, or part of its title.
--source <messenger>every held account of this messenger; personal, bots or all.
--timezone <zone>the IANA timezone for dates and active days.
--exactbare words match exact forms rather than stems.
--limit <n>ranked rows, 1–100.
--saved <name|id>run a saved query or ranking run; typed options replace stored options.
--min-messages <n>minimum selected messages per author; 1, or 5 for engaging.

max stats contacts evidence

bounded messages, answer pairs or retention members from an exact drilldown selection

max stats contacts evidence <person> [options]
ArgumentRequirementMeaning
personrequiredthe exact native person id from the ranking row.
OptionPurpose
--selection <json>the resolved ranking selection returned in drilldown.
--component <name>the exposed ranking component.
--limit <n>evidence rows, 1–100; 20 if not given.
--cursor <cursor>continue the same component and stored-evidence fingerprint.

max stats chats

statistics about one chat

max stats chats show

a group's or channel's numbers for a period: messages, active members, replies, reactions, questions answered, joins and leaves — counted from the local store; joins and leaves are asked of the messenger

max stats chats show <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--since-time <time>ISO 8601, or 2h / 1d ago; 7 days ago if not given.
--by <day|week>also one row per calendar day or week (weeks start on Monday).
--timezone <zone>the IANA timezone for calendar days.

max stats chats newcomers

known-join members and their help within a join window

max stats chats newcomers <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--since-time <time>from this ISO 8601 time, or 2h / 1d ago; 30d ago if not given.
--until-time <time>through this ISO 8601 time, or 2h / 1d ago.
--within <duration>the help window after a known newcomer join.
--saved <name|id>run a saved report of this kind; typed report options replace stored options.
--timezone <zone>the IANA timezone for calendar date boundaries.
--limit <n>report rows, 1–100; 20 if not given.
--answerer <person>stored name, alias, @username, ID or person:provider/account/id; ambiguous names require a choice; repeat for more.

max stats chats retention

joining cohorts and observed checkpoint membership from saved roster observations

max stats chats retention <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--since-time <time>joining period starts at ISO 8601 or a relative time; last 90 days by default.
--until-time <time>joining period ends at this time; now by default.
--checkpoints <durations>up to 10 increasing joining ages, comma separated; 1d,7d,30d by default.
--within <duration>activity and early departure window after joining; 7d by default.
--by <day|week>group joining dates by calendar day or Monday week. One of: day, week.
--timezone <zone>IANA timezone for joining cohorts.
--limit <n>cohorts and member evidence, 1–100.

max stats tasks

task statistics

max stats tasks show

per chat: how many tasks are open, the oldest open one, the median time to close

max stats tasks show [options]
OptionPurpose
--chat <chat>only this chat; a chat: its id, or part of its title.
--type <name>only this type: question, request, mention or promise.

max stats charts

a chart's data from a chat's statistics, and optionally a dark SVG or PNG image

max stats charts <chat> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
OptionPurpose
--chart-kind <messages|active|membership>what to draw: messages, active authors, or joins and leaves. Default: messages.
--by <day|week>one point per calendar day or week (weeks start on Monday). Default: day.
--since-time <time>ISO 8601, or 2h / 1d ago; 7 days ago if not given.
--timezone <zone>the IANA timezone for calendar days.
--output <file>write a dark image to a new .svg or .png file.

max tasks

what waits on you — unanswered questions, mentions, requests, promises — kept in the local store; review and serve add them

max tasks list

tasks, oldest first, with their message or note source

max tasks list [options]
OptionPurpose
--state <state>only tasks in this state: open, done or dismissed.
--chat <chat>only this chat's tasks; a chat: its id, or part of its title.
--type <names>only these types, comma-separated: question, request, mention, promise.
--before-time <time>only tasks opened before this ISO 8601 time, or 2h / 1d ago.
--limit <n>how many.

max tasks add

add a task for a stored message or note — a promise, a request

max tasks add <message> [options]
ArgumentRequirementMeaning
messagerequireda message locator, msg:///, or note:.
OptionPurpose
--type <name>the task's type: question, request, mention or promise.

max tasks close

close a task: done, or dismissed when it needs no answer; a closed task stays closed

max tasks close <task> [options]
ArgumentRequirementMeaning
taskrequiredthe task's id, as tasks list shows it.
OptionPurpose
--as <state>how it is closed: done, or dismissed — it needs no answer.
--reason <text>why, kept with the task — no-reply-needed, for example.

max conversations

the conversations inside a chat, found in the stored messages by replies, mentions and who wrote next

max conversations build

find a chat's conversations in what the store holds, replacing the last build; without --chat, every chat that changed since its build and every group never built; never asks the messenger

max conversations build [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--analyzelink batches using the configured analysis provider; requires --chat and remembers consent for this chat/provider.
--provider <provider>analysis: agent, openai or anthropic.
--model <model>analysis model; overrides analysisModel.
--base-url <url>analysis API endpoint; overrides analysisBaseUrl.
--size <n>analysis answer messages per batch, 10–200; default 50.
--max-tokens <n>analysis input/output reservation cap per run; default 100000.
--max-chats <n>at most this many chats in one run; 20 if not given.

max conversations list

a chat's conversations, the newest first: when, how many messages, how many people

max conversations list [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--since-time <time>only those that started at this ISO 8601 time, or 30m / 2h / 1d ago, or later.
--limit <n>how many.

max conversations show

one conversation's messages, oldest first — by its id, or the one a message is in

max conversations show <conversation> [message]
ArgumentRequirementMeaning
conversationrequireda conversation id from conversations list; or a chat: its id, or part of its title, with a message.
messageoptionala message id in that chat: show the conversation it is in.

the conversations nearest in meaning to the one a message is in, in every built chat, best first — from the vectors conversations embed stored; runs no model

max conversations related <chat> <message> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequireda message id in that chat.
OptionPurpose
--limit <n>how many.
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.

max conversations status

how fresh each built chat's conversations and vectors are: messages the build has not seen, chunks with a current, stale or missing vector

max conversations status [options]
OptionPurpose
--chat <chat>only this chat: a chat: its id, or part of its title.
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.

max conversations batches

windows of a chat for your own AI agent to link: which earlier message each one answers

max conversations batches status

how many messages still wait for an answer, in how many batches, and how much text

max conversations batches status [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--size <n>messages to answer per batch, 10–200; 50 by default.

max conversations batches next

the next window to answer, with the messages before it; message text goes to stdout only

max conversations batches next [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--size <n>messages to answer per batch, 10–200; 50 by default.

your agent's answers: which earlier message each message of a batch answers

store your agent's answer to a batch, read as JSON from stdin: { "model", "answers": [{ "message", "parent", "confidence" }] }; all or nothing

max conversations links add [options]
OptionPurpose
--batch <id>the batch id conversations batches next printed.

drop your agent's answers for a chat, or only one model's; messages are never touched

max conversations links clear [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--model <model>only the answers this model gave.

max conversations consents

remembered analysis permissions for this account's chats and provider endpoints

max conversations consents list

max conversations consents list

max conversations consents revoke

max conversations consents revoke [options]
OptionPurpose
--chat <chat>revoke only this chat's consents; defaults to every chat.
--provider <identity>exact provider identity from consents list; defaults to every provider.

max conversations embed

compute a vector for each chunk of a chat's conversations for search by meaning — on this machine, or with --provider through a service and your key; resumes where it stopped; without --chat, every built chat with chunks left, on this machine only

max conversations embed [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.
--workers <n>local: sessions in parallel, each with its own copy of the model (~0.7 GB each).
--threads <n>local: threads in all (default: min(8, cores)).
--concurrency <n>remote: requests at once (default: 4).
--max-tokens <n>remote: stop before a run that could send more tokens than this.
--max-chats <n>at most this many chats in one run; 20 if not given.
--max-chunks <n>at most this many chunks embedded in one run; 2000 if not given, and no limit with --chat.

max conversations embed status

how many chunks of a chat have a vector of the model, how many are left, and what is left costs

max conversations embed status [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.

max conversations embed clear

drop a chat's vectors, or only one model's; messages and conversations are never touched

max conversations embed clear [options]
OptionPurpose
--chat <chat>a chat: its id, or part of its title.
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.

max attachments

the files of stored messages: their text in the local store, for content: in a search

max attachments extract

read the text of downloaded files — text, PDF/DOCX text layers, ODT/ODS/XLSX/PPTX/EPUB — into the local store, for content: in a search

max attachments extract [options]
OptionPurpose
--chat <chat>only this chat's files; a chat: its id, or part of its title.
--from-dir <dir>match files in this nonrecursive directory; needs --chat.
--cursor <cursor>continue from the cursor returned by a bounded extraction.
--downloadfirst save the files no download saved yet, from the messenger, into --output-dir.
--output-dir <dir>with --download, where to save them; created if missing.
--limit <n>read at most this many files; run it again to continue.
--ocrexplicitly call models.ocr for bulk image and scanned-PDF text extraction.
--concurrency <n>remote: requests at once (default: 4).

max attachments list

files of stored messages, where each was saved and whether its text is held — never the text

max attachments list [options]
OptionPurpose
--chat <chat>only this chat's files; a chat: its id, or part of its title.
--needs-textonly files saved here whose text nobody has yet: what an agent reads and writes back.
--limit <n>how many to show.
--page <n>which page, starting at 1.
--allevery row, no paging.

max attachments show

read a bounded chunk of one retained attachment; JSON includes base64 bytes

max attachments show <chat> [message] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title; or a msg: locator alone.
messageoptionalthe message id.
OptionPurpose
--attachment <n>file position from 1; required for several files.
--page <n>render one PDF page as PNG, from 1; optional unpdf/canvas, no OCR.
--offset-bytes <n>byte offset from 0.
--chunk-bytes <n>bytes to return, 1–1048576 (default524288).
--if-sha256 <hash>require the whole file SHA-256 from the preceding chunk.

max attachments text

the text of one file, as an agent read it

max attachments text set

keep the text an agent read from a file — a scan, a photo — so content: finds it; nothing is sent

max attachments text set <chat> [message] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title; or a msg: locator, with no message id after it.
messageoptionalthe message id.
OptionPurpose
--attachment <n>which file of the message, from 1; needed when it has more than one.
--text-file <path>read the text from this file; - or none reads stdin.

max tags

your own labels on chats, people and messages, kept in the local store and never sent; tag: in a search finds them

max tags auto

derive local group/channel tags from cached metadata using keyword rules

Changes something on this computer only.

max tags auto [options]
OptionPurpose
--chat <chat>a stored group/channel; repeat to select several. Default: ``.
--limit <number>process up to the specified number of chats (1–500). Default: 50.
--refresh-metadataread current descriptions from the messenger before classifying.
--dry-runpreview cached classification without changing the store.

max tags add

put tags on one chat, person or message

Changes something on this computer only.

max tags add <tag> [options]
ArgumentRequirementMeaning
tagrequiredone or more tags: 1–32 letters a–z, digits and hyphens; upper case is lowered.
OptionPurpose
--chat <chat>the chat to tag, or the chat of --message; a chat: its id, or part of its title.
--contact <person>the person to tag: their id, @username or name, as the local store knows them.
--message <message>the message to tag: its id in --chat, or a msg: locator alone.

max tags remove

take tags off one chat, person or message

Changes something on this computer only.

max tags remove <tag> [options]
ArgumentRequirementMeaning
tagrequiredone or more tags: 1–32 letters a–z, digits and hyphens; upper case is lowered.
OptionPurpose
--chat <chat>the chat to untag, or the chat of --message; a chat: its id, or part of its title.
--contact <person>the person to untag: their id, @username or name, as the local store knows them.
--message <message>the message to untag: its id in --chat, or a msg: locator alone.
--source <manual|auto>remove only this ownership claim.

max tags list

what is tagged: this account's chats and messages, and the people of its messenger

max tags list [options]
OptionPurpose
--tag <tag>only this tag.
--source <manual|auto>only labels with this ownership claim.
--type <names>only what is tagged of this type: chat, contact or message.

max metadata

cached group/channel descriptions for local automatic tags

max metadata get

max metadata get [options]
OptionPurpose
--chat <chat>a stored chat.

max metadata refresh

Changes something on this computer only.

max metadata refresh [options]
OptionPurpose
--chat <chat>stored group/channel; repeat for several. Default: ``.
--only-missingonly chats with no metadata yet; without --chat, every stored group/channel.
--limit <number>process up to the specified number of chats (1–500). Default: 50.

find things by text: search all for everything the local store holds, or one resource

max search all

search everything the local store holds — messenger messages, mail and notes — best match first; start here when you do not know where something was written

max search all <query> [options]
ArgumentRequirementMeaning
queryrequiredstrict Lucene query: words, "phrases", AND/OR/NOT, field groups and date ranges.
OptionPurpose
--only <resources>only these, separated by commas: messages, mail, notes.
--limit <n>how many.
--exactbare words and quotes match their exact form only, as exact:word does.
--timezone <zone>the IANA timezone for calendar date boundaries.

max search messages

search messenger messages in the local store and on the messenger's server (--backend); optionally fetches new messages with --sync-first

max search messages [query] [options]
ArgumentRequirementMeaning
queryoptionalstrict Lucene query: words, "phrases", AND/OR/NOT, field groups and date ranges; --language legacy keeps discovery; with --saved, more words AND-ed to it.
OptionPurpose
--sync-firstfirst fetch new messages within the chat, time and message bounds.
--max-chats <n>refresh at most this many chats (default: 5).
--sync-time <duration>stop fetching after this long (default: 30s).
--max-messages <n>fetch at most this many messages total (default: 500).
--threadthe stored reply chain and replies instead of time neighbours; falls back when no graph exists.
--thread-hops <n>at most this many links from the hit (default: 8).
--thread-messages <n>at most this many messages in each thread context (default: 50).
--thread-bytes <n>at most this many bytes of whole messages and links in each context (default: 65536).
--thread-within <duration>messages within this long either side of the hit (default: 1d).
--backend <archive|server|both>where to search: the local archive, the messenger's server, or both (default: both).
--server-time <duration>stop waiting for the server after this long (default: 5s).
--chat <chat>only this chat — the same as chat: in the query; a chat: its id, or part of its title.
--source <messenger>every account of this messenger held in the store; personal, bots or all — the same as in: in the query.
--type <text|voice|file>only messages of this type: text alone, a voice message, or a file.
--limit <n>how many.
--newestnewest first instead of best first.
--exactbare words and quotes match their exact form only, as exact:word does; text: still matches every form.
--context <n>messages before and after each hit; 2 in the terminal, 0 otherwise.
--language <lucene|legacy>the query language: strict Lucene or legacy discovery.
--timezone <zone>the IANA timezone for calendar date boundaries.
--regexthe words are one regular expression, case-insensitive, tested against every stored text.
--saved <name|id>run a saved search or an earlier run; options typed here replace its own.

max search mail

search the mail imported into the local store — memo mail import brings it in

max search mail [query] [options]
ArgumentRequirementMeaning
queryoptionalstrict Lucene query: words, "phrases", AND/OR/NOT, field groups and date ranges.
OptionPurpose
--chat <chat>only this mail thread, by id or subject.
--limit <n>how many.
--newestnewest first instead of best first.
--exactbare words and quotes match their exact form only, as exact:word does; text: still matches every form.
--context <n>messages before and after each hit; 2 in the terminal, 0 otherwise.
--timezone <zone>the IANA timezone for calendar date boundaries.

max search notes

search the notes — written in memo, or imported from a notes folder — by words and, with the local text model, by meaning; each hit says which found it and what it links to

max search notes <query> [options]
ArgumentRequirementMeaning
queryrequiredstrict Lucene query: words, "phrases", AND/OR/NOT, tag: and date ranges.
OptionPurpose
--type <internal|file>only notes written in memo, or only notes from a folder.
--folder <id>only this notes folder, by its id; repeat it for more.
--tag <tag>only notes with this tag.
--filter <query>a query every hit must also match; it does not change the search by meaning.
--limit <n>how many.
--offset <n>skip this many, for the next page.
--exactwords as written only; meaning is not searched.
--timezone <zone>the IANA timezone for calendar date boundaries.

max search conversations

the conversations nearest to a query in meaning and in words, best first, in one chat or every one — meaning after conversations embed; runs on this machine

max search conversations <query> [options]
ArgumentRequirementMeaning
queryrequiredwhat to look for, in your own words, in any language the model reads.
OptionPurpose
--model <model>local: a model id from models text list (default: e5-small); remote: the provider's model.
--provider <provider>embedding provider: local or openai; flags override profile settings.
--base-url <url>a server with OpenAI's /v1/embeddings: Gemini, Jina, or Ollama and LM Studio on this machine.
--dims <n>remote: the vector size — needed with --base-url; shortens an OpenAI model's.
--max-chats <n>at most this many chats; 5 with --sync-first, 20 with --refresh if not given.
--max-chunks <n>at most this many chunks embedded in one run; 2000 if not given.
--sync-firstfirst fetch new messages within the chat, time and message bounds.
--sync-time <duration>stop fetching after this long (default: 30s).
--max-messages <n>fetch at most this many messages total (default: 500).
--chat <chat>only this chat: a chat: its id, or part of its title.
--since-time <time>only those still going at this ISO 8601 time, or 30m / 2h / 1d ago, or later.
--filter <query>strict Lucene filter: any message in a conversation must match; does not change the meaning query.
--source <source>accounts to search: personal, bots, all, or a provider; defaults to the active account.
--timezone <zone>IANA timezone for filter dates; system timezone by default.
--limit <n>how many.
--refreshfirst build and embed, on this machine, the chats in scope that changed or were never built — within --max-chats and --max-chunks.

max searches

saved searches and the history of search messages and stats messages show, kept in the local store; --saved runs one

max searches create

save a search under a name without running it; search messages --saved runs it

max searches create <name> [query] [options]
ArgumentRequirementMeaning
namerequiredup to 64 letters a–z, digits and hyphens, not only digits.
queryoptionalthe query, as for search messages; none matches every stored message.
OptionPurpose
--chat <chat>only this chat — the same as chat: in the query; a chat: its id, or part of its title.
--source <messenger>every account of this messenger held in the store; personal, bots or all — the same as in: in the query.
--limit <n>how many.
--newestnewest first instead of best first.
--exactbare words and quotes match their exact form only, as exact:word does; text: still matches every form.
--context <n>messages before and after each hit.
--language <lucene|legacy>the query language: strict Lucene or legacy discovery.
--timezone <zone>the IANA timezone for calendar date boundaries.
--regexthe words are one regular expression, case-insensitive, tested against every stored text.
--by <chat|sender|day|hour>what stats messages show --saved counts by.
--selection <json>save the resolved parent ranking query and options from a drilldown.
--replaceoverwrite a saved search of the same name.

max searches show

one saved search or earlier run: its query, options and how often it ran

max searches show <name|id>
ArgumentRequirementMeaning
name|idrequireda saved search's name, or the id of any row of searches history.

max searches list

the saved searches, by name

max searches list

max searches history

the searches and counts that ran, newest first — saved ones included; never their results

max searches history [options]
OptionPurpose
--limit <n>how many.

max searches delete

delete a saved search, or one run from the history

max searches delete <name|id>
ArgumentRequirementMeaning
name|idrequireda saved search's name, or the id of any row of searches history.

max searches clear

empty the history; saved searches stay

max searches clear

max flood

the waits MAX asked this profile to keep, and a hold on its writes

max flood clear

forget them, lift the hold and the profile's pace, once MAX no longer limits the account; changes nothing there

max flood clear

max models

models that run on this machine

max models audio

speech models for transcribing voice messages

max models audio list

the speech models, most suitable first, which are downloaded, and which one is the default

max models audio list

max models audio download

download a speech model once, checked against the sha256 this version expects

max models audio download <model>
ArgumentRequirementMeaning
modelrequireda model id from models audio list.

max models text

embedding models for searching conversations by meaning

max models text list

the embedding models, most suitable first, which are downloaded, and which one is the default

max models text list

max models text download

download an embedding model once, checked against the sha256 this version expects

max models text download <model> [options]
ArgumentRequirementMeaning
modelrequireda model id from models text list.
OptionPurpose
--accept-termsaccept the model's licence terms, for a model that has its own.

max models text key

API keys for embedding and analysis providers

max models text key set

store a key, typed at a hidden prompt or piped on stdin — never as an argument

max models text key set <provider>
ArgumentRequirementMeaning
providerrequiredopenai, anthropic, or the host of a --base-url server that wants a key.

max models text key remove

forget a stored key

max models text key remove <provider>
ArgumentRequirementMeaning
providerrequiredopenai, anthropic, or a server's host.

max polls

read a poll, vote in it, close your own, create one

max polls show

a poll and its answer ids, as the message carries it now

max polls show <chat> <message>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe id of the message that carries the poll.

max polls vote

vote in a poll, or take your vote back; the others see it unless the poll is anonymous

Changes something in MAX.

max polls vote <chat> <message> [answers] [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe id of the message that carries the poll.
answersoptionalanswer ids, as polls show prints them.
OptionPurpose
--retracttake your vote back.

max polls close

close your own poll; nobody can vote after that, and it cannot be reopened

Changes something in MAX.

max polls close <chat> <message>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe id of your own message that carries the poll.

max polls create

send a poll to a chat, as a message of its own; public unless --anonymous

Changes something in MAX.

max polls create <chat> <question> <answers> [options]
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
questionrequiredthe question.
answersrequiredtwo answers or more.
OptionPurpose
--topic <id>send to this forum topic; unsupported by messengers without topics.
--multiplepeople may pick several answers.
--anonymousnobody sees who voted for what.
--revotepeople may change their vote.
--silentsend without a notification.
--send-as <id>post as one of the identities chats send-as lists; required where the chat posts as someone else by default.
--send-id <id>repeat a create whose outcome was unknown, without risking a second poll.

max reactions

react to messages

max reactions add

put your reaction on a message; it replaces the one you had

Changes something in MAX.

max reactions add <chat> <message> <emoji>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe message id.
emojirequiredone emoji, for example 👍.

max reactions remove

take your reaction off a message

Changes something in MAX.

max reactions remove <chat> <message>
ArgumentRequirementMeaning
chatrequireda chat: its id, or part of its title.
messagerequiredthe message id.

max recipients

the chats this profile may send to, when the list is on

max recipients list

the chats on the list; empty and off until the first add

max recipients list

max recipients add

allow sending to this chat; the first add turns the list on

Changes something on this computer only.

max recipients add <chat>
ArgumentRequirementMeaning
chatrequiredchat id, or part of a chat name.

max recipients remove

stop allowing this chat; the list stays on

Changes something on this computer only.

max recipients remove <chat>
ArgumentRequirementMeaning
chatrequiredchat id, or the title as the list shows it.

max recipients clear

empty the list and turn it off: this profile may send to any chat again

Changes something on this computer only.

max recipients clear

max sends

every attempt to send from this profile — never the text

max sends list

attempts to send, newest first: sent, refused, failed, or not known

max sends list [options]
OptionPurpose
--limit <n>how many to show.

max inbox

other people's unread messages in every chat; --new for what arrived since the last check

max inbox [options]
OptionPurpose
--newwhat arrived since the last check, each message once — for scheduled runs.
--since-time <time>what arrived after this ISO 8601 time, or 2h / 1d ago; the saved point stays put.
--limit <n>at most this many per chat, the newest.
--allmuted and archived chats too — left out unless they mention you or reply to you.
--kind <kinds>only chats of these kinds, comma-separated: dialog, group, channel, saved.
--transcribeturn voice messages not heard yet into text — by the messenger, or a model on this machine; can take minutes.
--model <id>which downloaded speech model hears them, with --transcribe; models audio list shows them.
--mark-readalso mark each chat shown read, up to the newest message shown; the other side sees it.
--no-mark-readdo not, whatever the catchUpMarksRead setting says.

max review

every message, yours too, in chats that changed since a point — for reviewing who owes what

max review [options]
OptionPurpose
--since-time <time>where the last review ended — ISO 8601, or 2h / 1d ago; 3 days ago if not given.
--chat <chat>only this chat: a chat: its id, or part of its title.
--kind <kinds>only chats of these kinds, comma-separated: dialog, group, channel, saved.
--unanswered [duration]only questions to you or a group's admins that nobody answered, asked at least this long ago — 4h, 1d; 24h if not given.
--allmuted and archived chats too — left out unless they mention you or reply to you.
--transcribeturn voice messages not heard yet into text — by the messenger, or a model on this machine; can take minutes.
--model <id>which downloaded speech model hears them, with --transcribe; models audio list shows them.
--newwhat changed since the last review --new, a point per chat — for scheduled runs.
--mark-readalso mark each chat shown read, up to the newest message shown; the other side sees it.
--no-mark-readdo not, whatever the catchUpMarksRead setting says.

max replies

rules that answer messages for you, kept in a file of this profile

max replies add

add a rule with every default written out, off until you edit and enable it

Changes something on this computer only.

max replies add <id>
ArgumentRequirementMeaning
idrequiredlower-case letters, digits and -; unique in this profile.

max replies on

enable one reply rule; its template must be ready

Changes something on this computer only.

max replies on <id>
ArgumentRequirementMeaning
idrequiredthe rule's id.

max replies off

disable one reply rule

Changes something on this computer only.

max replies off <id>
ArgumentRequirementMeaning
idrequiredthe rule's id.

max replies edit

change only the named fields of a reply rule; lists replace the whole list

Changes something on this computer only.

max replies edit <id> [options]
ArgumentRequirementMeaning
idrequiredthe rule's id.
OptionPurpose
--do <actions>actions: reply, task, or both, comma-separated.
--kinds <kinds>chat kinds: dialog, group; comma-separated, empty for any.
--chats <ids>only these chat ids, comma-separated; empty for any.
--not-chats <ids>leave these chat ids out, comma-separated; empty clears.
--words <words>match any of these whole words, comma-separated; empty clears.
--questionmatch only questions.
--no-questiondo not require a question.
--mentions-merequire a mention of you or a reply to you.
--no-mentions-medo not require a mention of you or a reply to you.
--people <ids>only these sender ids, comma-separated; empty for any.
--not-people <ids>leave these sender ids out, comma-separated; empty clears.
--contacts-onlymatch only contacts.
--no-contacts-onlydo not require a contact.
--template <text>the reply template.
--model <mode>legacy template mode: fill-only or may-reword; use ai blocks instead.
--as-replysend as a reply to the matched message.
--no-as-replysend without linking to the matched message.
--per-chat <limit>at most this many per chat, such as 1/12h.
--per-person <limit>at most this many per person, such as 1/1d.
--outside <hours>answer outside this 24-hour window, such as 09:00-19:00.
--days <days>days of the working window, such as mon-fri or sat,sun.
--timezone <zone>the IANA timezone for the working window.
--no-hoursclear the working window.

max replies audience

show the profile's reply audience, or replace its named fields; testers still limit answers

Changes something on this computer only.

max replies audience [options]
OptionPurpose
--reply <mode>answer all or only listed senders and chats: all, listed.
--allow-people <ids>replace allowed sender ids, comma-separated; empty clears.
--allow-chats <ids>replace allowed chat ids, comma-separated; empty clears.
--deny-people <ids>replace denied sender ids, comma-separated; empty clears; deny wins.
--deny-chats <ids>replace denied chat ids, comma-separated; empty clears; deny wins.

max replies consents

consent for reply models once per profile and endpoint, with chat opt-outs

max replies consents show

show the reply model consent and chat opt-outs; never calls a model

max replies consents show

max replies consents grant

allow incoming message data to go to the configured reply model for this profile; chat opt-outs remain

Changes something on this computer only.

max replies consents grant

max replies consents revoke

revoke the profile's reply model consent immediately; chat opt-outs remain

Changes something on this computer only.

max replies consents revoke

max replies consents deny

keep this chat's incoming data away from the reply model

Changes something on this computer only.

max replies consents deny <chat>
ArgumentRequirementMeaning
chatrequiredthe native chat id, used as written; never resolved over the network.

max replies consents allow

remove this chat's model opt-out; does not grant profile consent

Changes something on this computer only.

max replies consents allow <chat>
ArgumentRequirementMeaning
chatrequiredthe native chat id, used as written; never resolved over the network.

max replies test

what the rules would have answered in the stored messages, to whom and why — sends nothing, changes nothing, never connects

max replies test [rule] [options]
ArgumentRequirementMeaning
ruleoptionalonly this rule, by its id; every rule in file order if not given.
OptionPurpose
--since-time <time>from this ISO 8601 time, or 2h / 1d ago; 7d ago if not given.
--aicall the configured reply model with stored message data; requires reply consent, otherwise uses fallback.

max replies pause

stop every reply rule of this profile at once, a running serve too; resume undoes it

max replies pause

max replies resume

let the reply rules answer again after pause

max replies resume

max replies status

whether the rules may send, which are on, and who they may answer

max replies status

max serve

stay connected to MAX and stream new messages to max watch, until Ctrl-C

max serve [options]
OptionPurpose
--idle <duration>stop after this long with nobody using it — 15m, 1h is 60m.

max server

max serve in the background: start, stop, restart, status, logs; install adds a systemd or launchd unit

max server start

start serve in the background — through the unit if one is installed — and answer once it connects

max server start [options]
OptionPurpose
--idle <duration>stop after this long with nobody using it — 15m, 1h.

max server stop

stop this profile's serve — through the unit if it runs under one

max server stop

max server restart

stop it and start it again

max server restart [options]
OptionPurpose
--idle <duration>stop after this long with nobody using it — 15m, 1h.

max server status

whether serve runs for this profile, since when, who started it, and the unit if there is one

max server status

max server logs

serve's latest log lines — from the journal under systemd, else its log file

max server logs [options]
OptionPurpose
-n, --lines <n>how many lines. Default: 50.

max server install

write a systemd user unit or a launchd agent for this profile; starts nothing

max server install

max server uninstall

remove this profile's unit; stop it first

max server uninstall

max watch

print new messages as they arrive, from a running max serve

max watch [options]
OptionPurpose
--eventsalso print edits, deletions, reactions, reads and chat changes; every line then names its event.

max config

the settings in force, and where each one came from

max config show

the profile, the profiles that exist, and each setting with where it came from

max config show [options]
OptionPurpose
--botthe settings a max bot command on this profile gets, rather than the personal account's.

max config migrate

replace legacy access settings with permissions, preserving effective levels

Changes something on this computer only.

max config migrate [options]
OptionPurpose
--dry-runshow the migration without writing the file.

max config set

save a setting to the configuration file

Changes something on this computer only.

max config set <setting> <value> [options]
ArgumentRequirementMeaning
settingrequiredone of: limit, timeoutMs, color, record, keepRunsForDays, readOnly, allow, permissions, sendsPerHour, requestsPerMinute, embeddingProvider, embeddingModel, embeddingBaseUrl, embeddingDims, analysisProvider, analysisModel, analysisBaseUrl, models, senderColors, catchUpMarksRead, searchCatchUp, serve, mcpTools, readOtherBots, updateCheck, skillHint, transcribeModel, defaultProfile, searchStemmers.cyrillic, searchStemmers.latin.
valuerequireda number, true or false, or for allow a list like send,reaction.
OptionPurpose
--defaultschange what every profile gets, rather than this profile.
--personalonly for personal accounts — the personal section of the file.
--botonly for bots — the bot section of the file.

max config unset

remove a setting from the configuration file

Changes something on this computer only.

max config unset <setting> [options]
ArgumentRequirementMeaning
settingrequiredone of: limit, timeoutMs, color, record, keepRunsForDays, readOnly, allow, permissions, sendsPerHour, requestsPerMinute, embeddingProvider, embeddingModel, embeddingBaseUrl, embeddingDims, analysisProvider, analysisModel, analysisBaseUrl, models, senderColors, catchUpMarksRead, searchCatchUp, serve, mcpTools, readOtherBots, updateCheck, skillHint, transcribeModel, defaultProfile, searchStemmers.cyrillic, searchStemmers.latin.
OptionPurpose
--defaultschange what every profile gets, rather than this profile.
--personalonly for personal accounts — the personal section of the file.
--botonly for bots — the bot section of the file.

max doctor

the state this installation is in, without contacting MAX unless --online

max doctor [options]
OptionPurpose
--onlinealso log in once, read one chat and start the MCP server; sends nothing.

max doctor report

what a problem report holds and where it goes; writes nothing

max doctor report create

write a problem report to a file, and print how to send it

max doctor report create [options]
OptionPurpose
--run <id>the run the report is about; the newest failed one if not given.
--output <file>where to write it; a new file in this directory if not given.

max runs

recorded runs — what this tool did, and when

max runs list

recorded runs, newest first

max runs list [options]
OptionPurpose
--limit <n>how many to show. Default: 20.

max runs show

one run: what it was, and one line per operation

max runs show <run-id>
ArgumentRequirementMeaning
run-idrequiredan id from max runs list.

max runs path

the directory holding one run

max runs path <run-id>
ArgumentRequirementMeaning
run-idrequiredan id from max runs list.

max skill

the instructions an agent is given for this tool

max skill show

print SKILL.md — max skill install puts it where Claude Code, Codex and Gemini CLI look for it

max skill show [name]
ArgumentRequirementMeaning
nameoptionalone of the skills shipped for a task: link-conversations.

max skill install

write SKILL.md to ~/.claude/skills/max-cli/ (Claude Code) and ~/.agents/skills/max-cli/ (Codex, Gemini CLI)

max skill install [options]
OptionPurpose
--for <agents>which agents to install for. One of: claude, agents, all. Default: all.

max commands

commands, options and exit codes as JSON — inspect one command path per call

max commands schema

one command's argv and result schemas, effects, permissions and retry guidance

max commands schema <path>
ArgumentRequirementMeaning
pathrequiredone command path, for example: stats messages show.

max upgrade

upgrade max with the package manager that installed it; --check only looks

max upgrade [options]
OptionPurpose
--checksay whether a newer version exists, and install nothing.

max complete

shell completion: max complete zsh prints the script to source

max complete [words]
ArgumentRequirementMeaning
wordsoptional

max mcp

serve this profile to an agent over MCP, on stdin and stdout — claude mcp add max -- max mcp

max mcp [options]
OptionPurpose
--permission <key=level>override a permission for this server only; repeat for more keys.
--allow-dangerousno longer used — writes show no form; the profile's permissions decide.
--allow-senddeprecated: use permissions.messages.send in config; does not grant access.
--confirm-sendno longer used — writes show no form; the profile's permissions decide.
--allow-mark-readdeprecated: use permissions.chats.mark-read in config; does not grant access.
--allow-deletedeprecated: use permissions.messages.delete in config; does not grant access.
--allow-moderatedeprecated: use permissions.chats.moderate and group rules; does not grant access.
--httpserve over HTTP on 127.0.0.1 for ChatGPT and Claude in the browser, behind your tunnel; the profile's permissions decide.
--http-confirmation <mode>no longer used — writes show no form; the profile's permissions decide.
--port <port>the local port for --http (default 8765).
--public-url <url>the tunnel's https address the browser apps use, e.g. https://.ts.net.
--revokeforget every login given to a browser app; each must log in again.

max mcp config

print the mcpServers entry for Claude Desktop, Cursor and others, with full paths; writes nothing

max mcp config [options]
OptionPurpose
--permission <key=level>override a permission for this server only; repeat for more keys.
--allow-dangerousno longer used — writes show no form; the profile's permissions decide.
--allow-senddeprecated: use permissions.messages.send in config; does not grant access.
--confirm-sendno longer used — writes show no form; the profile's permissions decide.
--allow-mark-readdeprecated: use permissions.chats.mark-read in config; does not grant access.
--allow-deletedeprecated: use permissions.messages.delete in config; does not grant access.
--allow-moderatedeprecated: use permissions.chats.moderate and group rules; does not grant access.

max mcp setup

add this profile's local MCP server to Codex or Claude Code

Changes something on this computer only.

max mcp setup <client> [options]
ArgumentRequirementMeaning
clientrequiredcodex or claude-code.
OptionPurpose
--allow-writesacknowledge that this profile offers writing tools.
--permission <key=level>override a permission for this server only; repeat for more keys.
--allow-dangerousno longer used — writes show no form; the profile's permissions decide.
--allow-senddeprecated: use permissions.messages.send in config; does not grant access.
--confirm-sendno longer used — writes show no form; the profile's permissions decide.
--allow-mark-readdeprecated: use permissions.chats.mark-read in config; does not grant access.
--allow-deletedeprecated: use permissions.messages.delete in config; does not grant access.
--allow-moderatedeprecated: use permissions.chats.moderate and group rules; does not grant access.

max mcp doctor

check this profile's local MCP handshake and tool list

max mcp doctor [options]
OptionPurpose
--permission <key=level>override a permission for this server only; repeat for more keys.
--allow-dangerousno longer used — writes show no form; the profile's permissions decide.
--allow-senddeprecated: use permissions.messages.send in config; does not grant access.
--confirm-sendno longer used — writes show no form; the profile's permissions decide.
--allow-mark-readdeprecated: use permissions.chats.mark-read in config; does not grant access.
--allow-deletedeprecated: use permissions.messages.delete in config; does not grant access.
--allow-moderatedeprecated: use permissions.chats.moderate and group rules; does not grant access.

Exit codes

Scripts should branch on the code, not the message: wording may change, codes remain stable.

CodeMeaning
0Success
2validation_error
3configuration_error
4authentication_error
5permission_error
6not_found
7confirmation_required
8rate_limited
9timeout
10network_error
11provider_error
12provider_unavailable
13invalid_response
14outcome_unknown
130cancelled
1Any other error

0, and only 0, means the operation succeeded. 14 — outcome_unknown — means the message may have been sent: its outcome is neither confirmed nor failed. Retry only with the same --send-id.