> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xysq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# xysq OneAgent

> One agent on WhatsApp with your memory in it. It answers from what you have told it, it books meetings for you, and it holds your reminders.

OneAgent is the assistant you text. It runs on WhatsApp, it reads and writes the same personal memory your other AI tools read, and as of today it does two things in the world on your behalf: it **books meetings** and it **holds reminders**.

Everything else about it is the same agent you already had. It answers questions from your vault, it keeps what is worth keeping, and it tells you which messages it kept.

## What OneAgent can do

The whole list, so you do not have to guess:

* **Answer from your memory.** Anything you or your tools have put in your personal graph.
* **Remember what you tell it.** Worth-keeping messages get saved; you can also save one yourself.
* **Book a meeting.** Find the guest's address, draft the invite, and send it from your Gmail once you say yes.
* **Hold reminders.** Set, list, move, and cancel them, and message you when one is due.
* **Read documents you send it.** PDF, TXT, MD, CSV, JSON.

That is the honest list. [What it cannot do](#what-it-cannot-do) is further down, and it is worth reading, because the gaps are the part people assume wrong.

## WhatsApp only, for now

OneAgent lives in one place. There is no OneAgent tab in the app and no OneAgent in your editor. You link a phone number once ([how to link](/connect/whatsapp)) and from then on you talk to it in a normal WhatsApp chat.

That is a deliberate limit, not an oversight. Booking a meeting takes a back and forth (a question, a draft, your yes), and a chat you already have open all day is the right surface for it. Other channels inherit the machinery when they get wired; nothing here is WhatsApp-shaped underneath.

## It shares your memory with everything else

OneAgent writes to your **personal context graph**. That is the same graph Claude, Claude Code, Cursor, ChatGPT, Windsurf, and anything else you [connect over MCP](/connect/overview) read from and write to.

So this works:

```text theme={"dark"}
Monday, WhatsApp:  "Rahul runs infra at Acme, we talked pricing on the 3rd"
Tuesday, Cursor:   "who do I email at Acme about the cluster?"  ->  Rahul
```

And it works the other way. A decision your coding agent pushed on Tuesday is something you can ask OneAgent about from your phone on Wednesday. One memory, many front doors.

## Book a meeting

Tell it who and when. It hands the booking off to a background worker, replies `On it.` in about two seconds, and keeps chatting with you while it works.

```text theme={"dark"}
you:  book a meeting with Rahul tomorrow 3pm for 30 min
xysq: On it.
```

Then, within about twenty seconds, one of two things comes back.

**A question**, if something is missing and nothing in your memory answers it:

```text theme={"dark"}
xysq: How long should it be? Your usual is 30 minutes.
you:  45
```

It checks your vault before it asks you anything, and it remembers your answer, so the next booking does not ask again.

**A draft**, once it knows enough:

```text theme={"dark"}
xysq: Here's what I'll send to Rahul Menon (rahul@acme.com):

      Event: Pricing follow-up, Wed 17 Sep, 15:00 to 15:45 (Asia/Kolkata), Google Meet
      Subject: Pricing follow-up, Wednesday?

      Hi Rahul, following up on the pricing thread from the 3rd. I've put
      45 minutes in for Wednesday afternoon, accept below if that works.

      Send it? Reply to this with yes, no, or what to change.
```

Nothing has left your account at this point. Reply to that message (use WhatsApp's own reply-quote) with:

* **`yes`** to send it.
* **`no`** to drop it.
* **anything else** to change it. `make it 45 min` comes back as a new draft at 15:00 to 15:45. `move it to Thursday` comes back on Thursday.

On your yes, it creates the event, attaches a real `.ics`, and sends one email **from your own Gmail**:

```text theme={"dark"}
xysq: Done. Invite sent to Rahul Menon (rahul@acme.com), Wed 17 Sep, 15:00.
```

Rahul gets an ordinary email from you with Yes / Maybe / No on it. When he accepts, the RSVP lands on the real Google Calendar event. He does not get Google's bare invite template, and he never gets anything from xysq.

<Note>
  Only you can approve a draft, and you have to say the yes in your own message. The agent cannot pass a yes along on your behalf, because approving is the step that puts mail in somebody else's inbox.
</Note>

### What it needs connected

Two Google connections, both one tap:

* **Gmail**, which is where the invite is sent from, and where it looks for the guest's address.
* **Google Calendar**, which is where the event lands.

If either is missing, the first thing you get back is the links:

```text theme={"dark"}
xysq: To book this I need two connections. Tap each, sign in, and reply done when you're in:
      Gmail: https://...
      Google Calendar: https://...
```

Tap, sign in, reply `done` quoting that message, and the booking picks up where it left off.

### Finding the guest's address

In this order, and it shows you the address before anything is sent:

1. **Your memory.** If you have told it Rahul's email, or pushed a session that mentioned it, that is the first place it looks.
2. **Your Google Contacts**, including the "other contacts" Google keeps for everyone you have ever exchanged mail with.
3. **Your Gmail threads.**

No third connection and no third-party lookup. If it cannot find an address, it asks you for one.

### More than one at a time

Two people in one message is two bookings:

```text theme={"dark"}
you:  book Rahul and Priya tomorrow, 3pm and 4pm, 30 min each
```

Both run at once, each gets its own question or draft, and you quote the one you mean. A bare `yes` with two drafts waiting is refused with a request to quote, because a yes that could mean either is a yes that mails the wrong person.

Booking the **same** person twice in one conversation is refused on purpose. Extra details go to the booking already open:

```text theme={"dark"}
you:  book Arun tomorrow at 12
xysq: On it.
you:  make it 45 minutes and mention the Q3 numbers
xysq: (folded into the same booking, no second invite)
```

### Changing your mind

* **`forget the Rahul meeting`** cancels it. Nothing is sent.
* Once it says it is sending, it is too late to cancel. It tells you that instead of pretending.

### What booking does not do yet

Said plainly so you do not wait for it:

* It does not watch the RSVP and tell you when Rahul accepts. Check your calendar.
* It does not pick a time for you from your free slots, and it does not negotiate a time by email. You give the time.
* It does not reschedule or cancel a meeting that is already booked. Do that in Calendar.
* Invites are verified against Gmail recipients. Other mail clients may draw the invite differently.

## Reminders

Tell it to remind you and it will message you, unprompted, at the time you asked.

```text theme={"dark"}
you:  remind me to send the deck at 6pm
xysq: Done, I'll nudge you at 18:00 today. ⏰
```

### Set, move, or cancel a reminder

It handles the ordinary things you would expect:

```text theme={"dark"}
you:  remind me in 20 minutes to check the deploy
you:  what have I got coming up?
you:  actually make that 7pm          (moves the reminder, never adds a second one)
you:  drop the deck reminder
```

A correction moves the reminder you already have. It does not quietly set a second one, which is what it used to do and how you end up with two phones buzzing at 18:00.

### The one honest limit

WhatsApp only lets us message you inside a **24 hour window** that you open by texting us. We do not send paid template messages. So a reminder due after that window shuts cannot arrive on time, and it says so when you set it:

```text theme={"dark"}
you:  remind me on Tuesday to call the bank
xysq: Set for Tue 23 Sep, 09:00. That's outside the window WhatsApp gives me
      to message you, so it'll reach you the next time you text me rather
      than at 09:00 sharp.
```

Nothing is lost. It fires the next time you say anything.

### Timezones

It needs to know your clock, and until you tell it, it guesses from your phone number and says so:

```text theme={"dark"}
xysq: Set for 18:00, assuming you're on Asia/Kolkata. Tell me if that's wrong.
you:  I'm in London now
xysq: Got it, Europe/London. Moved to 18:00 your time.
```

Confirm it once and it stops asking.

## What the marks mean

OneAgent reacts to your messages instead of writing a line about what it just did. Three emoji, and each one is a receipt for a different thing. WhatsApp allows one reaction per message, so each mark means exactly one thing:

| Mark          | What it means                                                                                                    |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| 🧠 brain      | This message went into your vault. It is memory now, and it comes back in any connected tool                     |
| ⏰ alarm clock | A reminder is live on this message. It moves if you move the reminder, and comes off when it fires or you cancel |
| ✅ tick        | This answer went into a booking. It was not saved to your vault                                                  |

You can put the 🧠 on yourself. React to any message with 🧠 and it gets saved; take the reaction off and it gets retracted. That is the whole gesture, no reply needed.

## What it cannot do

It has a habit worth knowing about: earlier versions would invent capabilities rather than admit a gap. It no longer does, and this is the list it is honest about.

* **It does not send ordinary email.** The only email it sends is the meeting invite you approved.
* **It does not message anyone but you.** Not the guest, not on LinkedIn, not on WhatsApp, not anywhere. The invite email is the only thing that reaches another person.
* **It does not read images, voice notes, or video.** Send text, or a document (PDF, TXT, MD, CSV, JSON).
* **It does not act outside WhatsApp.** No web chat, no app tab.

If you ask it something it cannot do, the answer is one line saying so. Take that at face value.

## Where to go next

<CardGroup cols={2}>
  <Card title="Link your number" icon="whatsapp" href="/connect/whatsapp">
    Linking, documents, what gets kept, and unlinking.
  </Card>

  <Card title="Connect your other tools" icon="plug" href="/connect/overview">
    The same memory, read and written by Claude, Cursor, ChatGPT, and the rest.
  </Card>
</CardGroup>
