Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/cputester5465/countbean-plugin/initgit clone --depth 1 https://github.com/CPUtester5465/countbean-pluginWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00030 | $0.00962 |
| Opus 5 | $0.00015 | $0.00481 |
| Sonnet 5 | $0.00006 | $0.00192 |
| Haiku 4.5 | $0.00003 | $0.00096 |
Grade A, and why
init scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
You are setting up the user's Countbean book. Arguments: $ARGUMENTS
Arguments are interpreted by shape, not by position:
- a
cbk_…token → hosted credentials pasted by hand; treat as/countbean:connect. - otherwise → first token = book name (optional), second = 3-letter currency (optional, default USD).
Do this in order:
-
Find out where you are. Call
connection_status.- If the tools are unavailable entirely (no
mcp__countbean__*), the MCP server did not start. Tell the user to run/mcpto see the error the server printed — it names the cause — and that/reload-pluginsretries it. First launch builds a Python venv and can take ~30s. Stop here; nothing below can work. HOSTED modeand reachable → they already have a cloud book. Report it, then go to step 4.HOSTED modebut NOT reachable → relay the reason; a revoked or mistyped key is the usual one. Offer to reconnect (step 2). Stop.LOCAL mode→ step 2.
- If the tools are unavailable entirely (no
-
Ask which they want. Do not assume.
Hosted (recommended, free to try) — their ledger runs on our infrastructure, opens in a browser, and is shared with an accountant by invite. Connecting it is TWO tool calls, in this order:
a.
start_device_authorization— returns immediately with a code and a link. b. Show the user both, verbatim, and wait for them to act. They open the link, pick which book to connect, and approve. c.await_device_approval— blocks until they approve, then saves the connection.Do not call (c) before showing the code from (a). The code is what the user types; if it is still sitting in your context when you start blocking, they have nothing to type and the grant expires after ten minutes.
Prefer this over asking for a key. The user never has to find, copy or paste a credential.
Fall back to
/countbean:connect cbk_… bok_…only if they already have a key in hand, or the browser is on a different machine.Local — a git-backed Beancount ledger in
~/.countbean/mainon this machine only. No browser UI, no sharing, no backups but their own. If they choose this, callcreate_bookwithname(from$1, else ask, else "My Books") andcurrency($2uppercased, else "USD"). -
Never silently pick one. A local book the user believes is hosted is the worst outcome here: it looks like it works, and none of it is backed up or reachable from the web app.
-
Seed the opening structure. Offer to set up a starter chart of accounts. If the user agrees (or says something like "set up my money situation"), use
open_accountsto open sensible accounts — typicallyAssets:Checking,Assets:Savings,Liabilities:CreditCard,Income:*,Expenses:*— following the double-entry rules in the countbean-accounting skill. Skip this if the book already has accounts. -
Confirm against the book, not your own memory. Call
book_statusand show the location, currency and account count it returns. Then point at what is next:/countbean:ingest <file>to import statements,/countbean:reportfor reports, and — if hosted — the book's page in the browser for the full ledger UI.
If the user has no book yet on the hosted side, start_device_authorization will still work but
the approval page will tell them to create one first from their dashboard. Relay that; do not try
to create a hosted book from here — the plugin cannot, and create_book is refused in hosted
mode for exactly that reason.
Keep it brief and friendly. Never invent balances — only record what the user tells you.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 69 lines · 30 tokens per session scan A d132495418fa
init is a command published in the GitHub repository CPUtester5465/countbean-plugin (17 stars, last pushed 6d ago), licensed MIT. It adds 30 tokens to every session and 962 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
report
Command "report" from rustledger/rustledger, covering rledger report, usage, subcommands, global options and examples.
price
Command "price" from rustledger/rustledger, covering title: rledger price description: fetch commodity prices, rledger price, usage, arguments and options.
query
Command "query" from rustledger/rustledger, covering rledger query, usage, arguments, options and examples.
check
Command "check" from rustledger/rustledger, covering rledger check, usage, arguments, options and examples.
add
Command "add" from rustledger/rustledger, covering rledger add, usage, arguments, options and interactive mode.
config
Command "config" from rustledger/rustledger, covering rledger config, usage, commands, options and examples.