| name | papr-rss |
| description | Read, search and triage the user's Papr RSS subscriptions from the shell via the `papr` CLI. Use when the user wants to catch up on their feeds, find or summarize articles they've subscribed to, check what's unread, star/save articles, subscribe to a new feed, or pull new posts. Triggers on: "what's in my feeds", "any unread RSS", "summarize this feed", "search my subscriptions for X", "mark these read", "subscribe to <url>", "refresh my feeds". |
Papr RSS CLI
papr is a token-efficient, agent-facing CLI over the user's local Papr RSS
database. It emits TOON on stdout (≈40% cheaper than
JSON, via the official toon-format encoder), keeps diagnostics on stderr, and
returns structured errors with exit codes (0 success/no-op, 1 runtime, 2 usage). Reads are token-minimal by default;
long article bodies are truncated with a --full escape hatch.
Run papr with no arguments first — it prints the unread dashboard plus the
most useful next commands, so you can orient without reading a manual.
Core flow
papr
papr feeds
papr list --feed <id>
papr list --starred
papr list --fields author,url
papr read <id> [<id>...]
papr read --feed <id> --unread --limit 5
papr read <id> --full
papr search "<query>"
Triage & subscriptions
papr mark read <id> [<id>...]
papr mark-all --feed <id>
papr subscribe <url>
papr refresh [--feed <id>]
papr extract <id>
Management (mirrors the desktop app)
papr tags | papr tag add <tag_id> <article_id> | papr tag create "<name>"
papr folders | papr folder create "<name>" | papr feed move <id> --folder <id>
papr rules | papr rule create "<name>" "<keywords>" --action star
papr highlights [--article <id>] | papr highlight create <article_id> "<quote>"
papr newsletters | papr newsletter add --title .. --host .. --user .. --password ..
papr opml import <file> | papr opml export
papr settings get <key> | papr settings set <key> <value>
papr stats
Sync
papr sync status | papr sync run
There are no summarize/ask/digest/translate commands: you are the language
model, so read the text with papr read <id> (or gather candidates with
papr search) and summarize, answer or translate it yourself — no second AI
provider is involved.
Destructive verbs require --yes; without it they fail with exit 2 and tell you
the exact command to re-run:
papr unsubscribe <id> --yes
papr admin cleanup <days> --yes
papr folder delete <id> --yes
Notes
- Every command takes
--db <path> (or the PAPR_DB env var) if the database
is not in the desktop app's default location.
- Output is data, not prose. Each list states a definitive total
(
count: N of M unread) so you never need to paginate just to learn the size.
- If the answer is "nothing", the command says so explicitly — a zero is an
answer, not a reason to retry with different flags.
- Prefer the ambient SessionStart hook (
papr setup) so the unread dashboard is
already in context at the start of a conversation; this skill is the
lower-overhead alternative that loads only when a feed task comes up.