Connecting an agent
ShippedWorks today.
You can talk to your book through a Telegram bot we host, through the Claude plugin with your own key, or through any client that speaks MCP.
Three ways in
Telegram. Message the Countbean bot and it works on your book. Nothing to install, no key to paste, no terminal. This is the path the credits pay for, because the inference is ours.
The Claude plugin. Install it, approve a short code in your browser, pick the book. Uses your Claude subscription, so it spends none of our credits.
Any MCP client. Cursor, Windsurf, Zed, or your own — the same server the plugin talks to.
Linking Telegram to your book
There is one shared bot for everybody, so a message has to prove which book it belongs to before it can reach one:
- Open your book’s page, signed in, and start a Telegram link. You get a short code.
- Send that code to the bot.
- The bot is now bound to that book.
One account, one book. Linking again replaces the previous binding, so “which book am I talking to” always has exactly one answer.
The reason for the browser step is worth stating plainly. A Telegram account id is not a credential — it is an integer anyone can read off their own account, and the bot is public. So the proof has to be produced by a signed-in human in a browser; a message on its own can never create a link.
What you can send it
Text, obviously. Also:
- A photo of a receipt. It rides to the model as image data. Telegram sends several sizes and the largest is used — it costs the same either way, because a 3024×4032 phone photo and a 900×1200 downscale were measured at identical prompt tokens.
- A statement file —
csv,ofx,qfx,txt,json— up to 8 MB, checked against the bytes that actually arrive rather than the size Telegram claims. Anything else is refused in words rather than quietly fetched.
⚠️ Sending a CSV is the model reading the file, exactly as the plugin does it. That keeps the chat at parity with the plugin rather than ahead of it, and it stays that way until the deterministic importer lands (#515).
Commands that cost nothing
/help, /start, /status, /disconnect. None of them reaches a model, so
none spends a credit or wakes your book. /help answers before you have
connected anything, so you can find out what the bot is first.
What runs where
Your agent runs inside your own book’s machine — one per book, not a shared service, on the machine the book already had. It reaches a model through a metered endpoint we host, which is what turns a turn of conversation into credits rather than an unbounded bill.
Telegram itself is answered by the control plane, not by your book: book machines have no public address, so a webhook could not reach one.
Which to use
If you already live in Claude, the plugin is better — your model, your context,
your cost, nothing metered. Telegram exists because the plugin’s install path
(a marketplace plugin, python3, a virtualenv, a pasted key) is where people
who are not developers stop.
Credits, and the free way round them
Free credits arrive once your email address is verified, whichever way you proved it. If the balance runs out, the bot says so plainly rather than reporting a failure that sounds like an outage — and it names the free route, because there is one: only the chat is metered. The Claude plugin runs on your own model subscription and costs you nothing here.
What there is not
- No WhatsApp. Telegram only.
- No group chats. One account, one book, direct messages.
- The pricing of it is not settled (#253). Metering is live and every
turn is measured; what each plan includes is still an open decision, and
/pricingsays only what can actually be charged today.
What Pip is doing
The agent has four states, and they are states the system really has. Pip reports them; it never claims anything.
Something here wrong or missing? Put it on the board — it is public, and the reply is in the thread.