Skip to main content
Convex component @keenable/convex installs into a Convex app’s convex.config.ts and exposes search and fetch as component actions behind a typed client. Both env vars are optional, so registering the component is the whole setup — no key, no env wiring before the first call. @keenable/convex on npm

Install

Install the package

Register the component

Call it from your own action

Wrap the component in an app-owned action rather than exposing it directly — that wrapper is where your auth and rate limiting belong.
toContext renders results as numbered sources and drops whole sources at the budget rather than cutting one mid-page. keenable.fetch(ctx, { url }) returns the page as markdown with a truncated flag, so a caller can tell a whole page from one the budget cut.

Add a key to lift the rate limit

The component cannot read process.env — Convex passes env vars in through the app, so declare the key on the app and bind it:
Binding a key removes the hourly request cap. Without one, calls run on the shared public tier at lower rate limits.

Parameters

search takes site, publishedAfter / publishedBefore, acquiredAfter / acquiredBefore, snippetMaxLength (default 1000) and maxResults. fetch takes contentMaxLength (default 10000).