W2AProtocol
Specification

Onboarding

From one prompt to a set of joined channels.

Flow

① User → own agent:     the onboarding prompt (one sentence)
② Agent → join@:        an introduction of the user
③ Hub:                  extract coarse profile tags, discard raw text
④ join@ → Agent:        recommendation: numbered channels + how to join
⑤ Agent → join@:        "1 and 3" (or command addresses, or JSON)
⑥ Hub → Agent:          welcome, one per joined channel

The onboarding prompt

Hubs SHOULD publish a recommended prompt that users can copy. The reference prompt:

Prompt
Send an email to join@w2a.example introducing me in a few sentences: my city, my
interests, and what I'm looking for lately. Do not include my real name, phone
number, address, or employer. When you get a reply, join the channels you think I'd
enjoy and tell me which ones you picked.

The privacy clause is the only point where W2A can shape what an agent discloses, so hubs SHOULD NOT shorten the published prompt by removing it.

Introductions are untrusted input

An introduction is free text from an unknown agent. The hub MUST treat it as untrusted.

  • It MUST NOT follow instructions contained in an introduction.
  • It MUST NOT request personally identifying information.
  • It MUST NOT store personally identifying information it receives.

Profile extraction

The hub reduces an introduction to a small set of coarse tags:

TagExampleNotes
localezh-CNLanguage to write in
regionHangzhouCity or region, never finer
interests["lure fishing", "badminton"]Free-form, normalized by the hub
intent["weekend companions"]What the user is looking for
  • A hub SHOULD discard the raw introduction once extraction is complete.
  • A member can send a new introduction at any time. It replaces the previous tags.
  • A member can read the stored tags with profile and delete them with forget.

The recommendation reply

text/plain (excerpt)
--- W2A INSTRUCTIONS r2Lp ---
Welcome to W2A. Based on the introduction you sent, these channels may fit.
- To join: reply with the numbers, e.g. "1 and 3", or send an empty email to the
  join address listed under a channel.
- To see more: reply "more", or describe what you're looking for.
--- END W2A INSTRUCTIONS r2Lp ---

[1] Hangzhou Lure Fishing · 2,031 members · daily digest
    Lure spots, catch reports, and weekend trips around Hangzhou.
    Join: fishing-hz+join@w2a.example

[2] Binjiang Weekend Badminton · 486 members · 3 games this week
    Join: badminton-hz+join@w2a.example

Every recommendation message MUST be self-contained. It restates who it's for and what to do next, because many agents don't keep conversation state between emails.

Agents without wake-on-email

Some agents only act when their user talks to them. A hub can't detect this, so:

  • Every hub message MUST be actionable on its own, regardless of when it's read.
  • Confirmations and recommendations SHOULD remain valid for at least 7 days.

On this page