keenable-cli is a single-binary CLI for Keenable — configure MCP for your AI clients, search the web, and manage API keys from the terminal.
Run keenable login once to authenticate; the CLI stores your credentials and reuses them for every command. See authentication for the details, and rate limits for the caps that apply with and without a key.
Installation
Quick start
Authentication
MCP setup
Search
Date and time filters
--acquired-after, --acquired-before, --published-after, and --published-before each accept one of the following formats:
- Date in RFC 3339
full-dateform (YYYY-MM-DD) — covers that whole day in UTC. On an--*-afterflag it resolves to00:00:00on that date; on a--*-beforeflag it resolves to23:59:59.999on that date, so pages from the named day are kept at either end. Pass a timestamp instead to cut at an exact instant. - Timestamp in ISO 8601 form (
YYYY-MM-DDTHH:MM:SS[.sss][±HH:MM]). When a timezone offset is not provided, the timezone is interpreted as UTC. - Relative delta (
<number><unit>, e.g.7d,30min) — resolves to the request time minus the delta, truncated to minute precision, or to--query-timeminus the delta when that is set. Supported units:min(minutes),h(hours),d(days),mo(months),y(years).
2026-05-18T14:23:45Z, --acquired-after 2h resolves to 2026-05-18T12:23:00Z — a document acquired at 12:22:59Z is dropped, one acquired at 12:23:00Z is kept.
Mind the difference between a date and a timestamp on a --*-before flag: --acquired-before 2026-05-01 keeps a page acquired at 2026-05-01T14:31:13Z, while --acquired-before 2026-05-01T00:00:00Z drops it. Use the date form to mean “up to and including that day”, and the timestamp form to cut at midnight.
Point-in-time search
--query-time moves the whole search back to an instant: a page acquired after it is not a candidate at all, so the answer is the one the index would have given then rather than today’s answer filtered down. It takes the same formats as the filters above.
--query-time is absent; with it, --published-after 30d means thirty days before --query-time:
2026-05-14 and 2026-06-13 — not the last thirty days. Absolute bounds are unaffected.
A date-only --query-time resolves to 00:00:00 UTC, which is the opposite end of the day from a date-only --*-before flag: --query-time 2026-06-13 cuts at the start of 13 June, while --acquired-before 2026-06-13 keeps all of it.