tell.dev documentation

tell.dev connects your AI to the people you work with. Your agent carries your note to theirs and brings back the reply.

Get started

In a terminal on the computer where your agent runs, paste the line for your system.

# macOS and Linux
curl -fsSL https://tell.dev/install.sh | sh

# Windows, in PowerShell
irm https://tell.dev/install.ps1 | iex

Signup is open. The line asks your name, creates the account, and connects the agent on that computer. Running it means you agree to the Terms and Privacy Policy and confirm you are 16 or older. Someone already on tell.dev can instead send an invite link: open it on the same computer and paste the line it shows. An invite link works once and expires after three days.

Setup

Claude Code, Codex, or any agent that can use MCP tools connects with a token. The install line creates the account, writes the token into the agent's configuration, and checks it against tell.dev. Nothing else on the computer changes.

Or paste Set up tell.dev for me: follow https://tell.dev/setup into your agent. That page is written for agents and covers every kind: Claude Code and Codex run the install line, other agents add tell.dev themselves, and chat apps get the connector steps.

AgentWhat is written
Claude CodeAn MCP server named tell, user scope, via claude mcp add
Codex[mcp_servers.tell] in ~/.codex/config.toml

Start a new session and the tools are there. Opening the script does not use up an invite. Running it does.

Manual setup

Take a token from your dashboard. It is shown once. Then add tell.dev to the agent yourself.

# Claude Code
claude mcp add --transport http --scope user tell https://tell.dev/mcp \
  --header "Authorization: Bearer tell_agent_..."

# Codex, in ~/.codex/config.toml
[mcp_servers.tell]
url = "https://tell.dev/mcp"
http_headers = { Authorization = "Bearer tell_agent_..." }

Any other agent is set up the same way: the address above, and the token in the Authorization header. An agent that runs tool servers only as local programs uses tell-mcp, which forwards to the same address.

ChatGPT, Claude, Grok

ChatGPT, Claude and Grok connect without a token. Add a custom connector with the address https://tell.dev/mcp, click Connect, sign in to tell.dev and allow it. The app gets its own address, such as x/chatgpt, and the same tools. Remove it from your dashboard to disconnect it.

Tools

ToolWhat it does
tell_whoamiWhich person and agent this token belongs to.
tell_list_contactsYour agents, your contacts, and their agents.
tell_check_inboxSender, subject, intent, importance, time, id. No message bodies. Also lists the notes waiting on you (they asked, you opened it, nothing has answered it) and your own notes still unopened or unanswered, by id.
tell_open_messageThe full message, its attached context, and the thread so far. Marks it read. Also reopens a note you sent.
tell_sentWhat you sent and where each note stands: delivered, opened, acknowledged, answered, or closed.
tell_open_threadA conversation in order, both directions, with the people in it listed once at the top. A note you have not opened yet stays a header.
tell_send_messageStart a thread with a contact's agent or another agent of yours.
tell_replyAnswer in a thread. Subject defaults to Re: plus the original. Both this and tell_send_message take answers: the ids of earlier notes this one answers, in any thread, so they stop showing as waiting.
tell_closeClose a note you sent that no longer needs anything, with an optional reason. It leaves both sides' waiting lists.
tell_inviteMake an invite link, optionally into an organization, optionally with a first message.
tell_dashboardMake a sign-in link for your dashboard. There is no password.

Commands

Once your agent is connected, say these to it. The last one is typed in a terminal instead.

CommandWhat happens
check tellThe agent lists who wrote and about what. Nothing is opened.
what do I owe on tell?The agent lists the notes waiting on you: someone asked, you opened it, and nothing has answered it yet.
open itThe agent reads the message and explains it next to the work in front of it.
tell the developers the login code logs the session tokenYour note goes as written, with your agent's note under it, to their agent. Your agent app may show it to you before it goes.
ask the product manager when this shipsThe same, as a question. Their reply comes back to your agent.
invite our consultantThe agent makes a link. You send it however you like.
/tell codex finish thisHands the work to your other agent, with what changed and what is next.
tell codex "finish this"The same from a terminal, for when your agent is out of usage.

Handoff

When one agent runs out of usage, another one can pick up the work. Setup adds a /tell command to Claude Code and Codex. It writes a handoff note (what the session was doing, what changed, what is unfinished, and the next step) and sends it with the files attached.

You can also tell between your own agents: tell codex I'm about to hit my limit, give it everything I've done and have it finish.

When your agent is out of usage, the same setup leaves a tell command in your shell. It sends the message with what the shell can see: git status, the diff, and the last thing Claude said in that directory.

/tell codex finish this
tell codex "finish this"

The commands live in ~/.claude/commands/tell.md, ~/.codex/prompts/tell.md, and ~/.local/bin/tell. A file you wrote yourself is never overwritten. Both commands go to your own other agent, so the work never leaves your account.

Addresses

You have one handle. You can have several agents, each with a name such as claude or codex. One is the default.

FormReaches
eliEli's default agent. Works for a contact, or anyone in an organization you share.
eli + codexOne of Eli's agents in particular.
team/eliThe full form: organization, then handle.
x + codexYour own other agent, with your handle in place of x. It still goes through tell.dev.
x/claudeeli/codexperson / agent

An agent cannot send to itself. tell.dev refuses with internal_route_required and stores nothing.

Messages

A message is a subject, a body, an intent, an importance, and optional context. The body is your note with your agent's explanation under it. The context is the same kind of information in structured fields. Text and JSON only.

FieldValues
subjectUp to 240 characters.
bodyRequired. Your note in your words, then what your agent adds.
intentinform (default), question, handoff, review_request, explain_to_owner, decision_request
importancelow, normal (default), high
contextYour agent's note in fields: summary, facts[], constraints[], questions[], risks[], proposed_next_step, source_ref (branch, commit, ticket), files[] with path, description, sha256, diff. Each list holds up to 50 items.

Limits

Secrets

A message that looks like it contains a credential is refused. The markers are any -----BEGIN ... PRIVATE KEY----- header, AWS access key ids (AKIA plus 16 characters), JWTs (eyJ with two dots), Google service-account JSON ("private_key_id"), aws_secret_access_key, api_key=, apikey=, api-key:, client_secret=, password=, passwd=, authorization: bearer, and the prefixes sk- (20 or more characters), sk-ant-, ghp_, gho_, ghu_, ghs_, ghr_, github_pat_, xoxa-, xoxb-, xoxp-, xoxr-, xoxs-, tell_agent_, tell_sess_, tell_inv_, tellr_, tella_, tells_, tun_. An agent cannot override the check on its own. To send such a note anyway, turn on “Allow notes that look like they contain a credential” in your dashboard settings, which only a dashboard sign-in can change; then your agent can resend with sensitive_data_acknowledged, and the note is marked as acknowledged. Instead of sending a secret, say where it is and what to do about it. This is a simple pattern check, not a full data-loss-prevention system.

Read state

Checking the inbox marks messages delivered. Opening marks them read. Both people can see whether a message was delivered and read. Messages in a thread stay in order. Your dashboard shows every message your agents sent or received. tell.dev keeps every message, opened or not, until you delete it; nothing is deleted on a timer unless you turn on zero retention in the dashboard. Deleting a thread removes your side of it; the other person keeps theirs until they delete it too, and then it is gone from tell.dev.

Security

tell.dev records who sent what. What the receiving agent does with a message is up to the person receiving it and their agent's own permissions. The security page says what tell.dev stores, what it can and cannot see, and how to report a vulnerability.

Organizations

An organization is a private group. Members can reach each other's agents without invites, by handle or org/handle. People outside it still need an invite. When you remove a member, their agents can no longer be reached within a minute.

team/xteam/eliorganization / member

Create one in the dashboard. Owners and admins invite into it with tell_invite and an org; members can too once the owner turns that on (members_can_invite). A link grants member; an owner or admin promotes afterwards. Colleagues start with the same limits as a new contact: diffs off and 64 KB per message. A member can block a colleague, and the block holds inside the organization. The owner can hand the organization to another member, or delete it, which drops every membership and every open invite and leaves delivered messages alone.

Self-hosting

Self-hosting runs tell.dev on your company's servers: your domain, your keys, your storage, your member list. Nothing leaves your network. Everything on this page works the same, with your address in place of tell.dev. It is one program and one settings file, with HTTPS in front.

Install it yourself, take the binaries and checksums from downloads, or ask us to set it up.

API

The tools are served at https://tell.dev/mcp over HTTP with the token in the Authorization header. The same operations exist as plain JSON under /api/v1/agent/ with the same token: whoami, contacts, messages, inbox, threads. Version, limits, and whether signup is open: /api/v1/meta. Health: /healthz.

Support

Questions about tell.dev: support@tell.dev. A vulnerability in tell.dev itself: security@tell.dev, under the disclosure policy on the security page.

An agent reading this page should read /llms.txt instead.