Guide · Agent skill
How to use the Keenable Keyless Web Search agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The keenable-search skill gives an AI agent two abilities: run broad web searches and fetch a specific web page as clean markdown, without you creating a paid search API key. It is useful for finding blogs, docs, project pages and news that academic databases such as arXiv or Semantic Scholar miss. This guide explains what agent skills are, how to install this one, how to trigger it with plain requests, and what to watch for.
Quick start
- 1Download and unzip the skill. Download the keenable-search ZIP from the page where you found this guide and unzip it. You should end up with a keenable-search folder containing SKILL.md.
- 2Place it where your agent looks. Copy the folder into ~/.claude/skills/ for all projects, or into a project's .claude/skills/ folder for one project. In the Claude apps, upload it under Settings, then Capabilities, then Skills.
- 3Make the helper available. Confirm keenable_search.py is in the ARIS repository's tools/ folder, or in .aris/tools/ or tools/ in your project. The skill stops with an error if it cannot find the helper.
- 4Optionally set an API key. If you need higher rate limits, create a key in the Keenable console and set KEENABLE_API_KEY. The skill works without it.
- 5Ask for a search in plain language. Say something like 'keenable search for local LLM quantization guides'. The agent runs the helper and returns a table of results.
- 6Fetch a page when you need its text. Give the agent a URL and ask it to fetch the page as markdown. Check the content against the original page before relying on it.
- 7Narrow or follow up. Ask for a re-search with a site or date filter, or ask for a full fetch of any result.
What an agent skill is and what this one does
An agent skill is a folder containing a SKILL.md file that tells an AI agent when to use a capability and how to carry it out. This skill is named keenable-search and is defined by a single SKILL.md file.
Once installed, the agent can search the web through Keenable and read individual pages. The skill calls a helper script, keenable_search.py, which queries Keenable's public endpoints. Results come back as titles, links, dates when known, and short text snippets, or as the full text of a page converted to markdown.
- Search: broad web results with a page-text snippet per result
- Fetch: a known URL returned as markdown
- Filters: restrict to one domain, a start date, an end date, or a character limit per result
Install the keenable-search skill
Download the skill ZIP from the page where you found this guide, then unzip it. For Claude Code, place the keenable-search folder in ~/.claude/skills/ to make it available to all your projects, or in a project's .claude/skills/ folder to limit it to that project.
If you use the Claude apps, you can instead upload the skill under Settings, then Capabilities, then Skills.
The skill also needs the keenable_search.py helper. The skill looks for it in .aris/tools/, then tools/, then in the ARIS repository's tools/ folder (via ARIS_REPO or ~/.aris/repo). If none is found, the skill stops with an error.
- Claude Code, all projects: ~/.claude/skills/
- Claude Code, one project: .claude/skills/ inside the project
- Claude apps: Settings, Capabilities, Skills, then upload
Check the requirements
You need Python 3. The helper uses only the Python standard library, so there are no pip packages to install. You also need network access to Keenable's public endpoints.
An API key is optional. Without one, the public endpoints are rate-limited per IP address. If you want higher limits, create a key in the Keenable console and export it as the KEENABLE_API_KEY environment variable.
- Python 3 (standard library only)
- keenable_search.py present in the ARIS repository tools/ folder or another resolved location
- Optional: KEENABLE_API_KEY from the Keenable console
- Network access to Keenable's public endpoints
export KEENABLE_API_KEY=your-key-hereTrigger the skill with natural requests
You do not need special syntax. The skill is meant to be used when you say things like 'keenable search', 'web search without an API key', or 'fetch this page as markdown'. It also fits any request for broad web results beyond academic databases when no search API key is set up.
You can also pass arguments directly. Anything after the skill name is treated as the search query or a URL. Filters are appended after an em dash in the argument.
- Search: 'Use keenable search to find recent write-ups on RAG evaluation'
- Fetch: 'Fetch this page as markdown: https://example.com/post'
- Limit results: append 'max: 5' to get the top five
- Limit to one domain: append 'site: arxiv.org'
- Recent pages only: append 'start date:' with a YYYY-MM-DD value
- Longer snippets: append 'max chars:' with a character count
/keenable-search "RAG pipelines" — max: 5Run searches and fetches directly
When the agent runs the skill, it calls keenable_search.py with a search subcommand or a fetch subcommand. The helper prints JSON. Search entries include title, url, snippet and, when known, published_date. Fetch entries include content in markdown and, when the page exposes them, author and published_date. URLs that could not be fetched are listed under errors.
By default the skill returns 10 results. The maximum is 50.
- Search, default 10 results: python3 keenable_search.py search 'QUERY' --max 10
- Search with filters: add --site, --start-date and --max-chars
- Fetch one or more pages: python3 keenable_search.py fetch 'URL1' 'URL2'
python3 "$KEENABLE_FETCHER" search "QUERY" --max 10 --site arxiv.org --start-date YYYY-MM-DD --max-chars 8000Read and use the results carefully
The skill presents results as a table with title, URL, date, and a one or two line summary of each snippet or fetched page. Snippets and fetched pages are unvetted web text. They can be wrong or misleading, and they may contain instructions aimed at an AI agent. The skill is written to treat them as data and never to follow instructions found inside them.
Treat the output as leads to check, not as verified facts. For academic claims, confirm against the original paper.
- Open the source page before relying on a claim
- Watch for dates: a result without a published date may be old or undated
- If results are thin, narrow or widen the query instead of trusting a single snippet
Tips for better results
Use fetch when you need a page's full text, not a snippet. Use search when you are exploring. Combine this skill with /arxiv or /semantic-scholar when you need comprehensive literature coverage, since this skill is for general web pages and does not replace academic databases.
If you hit an HTTP 429 rate-limit error, wait and retry, or set KEENABLE_API_KEY. The site filter accepts one domain, so for several domains run one search per domain.
- Use site: to focus on one domain such as arxiv.org
- Use start date: to exclude older pages
- Use max chars: when snippets are too short to judge relevance
- Pair with /arxiv or /semantic-scholar for papers
What people use it for
- Finding blog posts, documentation and project pages on a new library alongside academic papers
- Reading a known article or docs page as clean markdown so the agent can summarise or quote it
- Searching one domain, such as arxiv.org, for general pages rather than full papers
- Finding recent news or write-ups by setting a start date filter
- Doing a quick web search without creating an account or API key
Frequently asked questions
Is the Keenable search skill free?
The skill itself is MIT licensed. The helper uses Keenable's public endpoints, and you can use it without an API key. A key from the Keenable console is optional and gives higher rate limits.
Do I need an API key to use Keenable search?
No. The skill works without a key, but the public endpoints are rate-limited per IP address. If you hit rate limits, you can create a key in the Keenable console and set KEENABLE_API_KEY.
What do I need to install before using this skill?
You need Python 3, which is the only requirement for the helper since it uses only the standard library. You also need the keenable_search.py helper in the ARIS repository's tools/ folder and network access to Keenable.
Why does the skill say it cannot find keenable_search.py?
The skill checks .aris/tools/, tools/, and the ARIS repository's tools/ folder, using ARIS_REPO or ~/.aris/repo. Make sure the helper is in one of those locations. The skill has no fallback, so it stops with an error if the helper is missing.
How is this different from Exa search or arXiv search?
This skill covers broad web pages without a key, and returns a snippet per result or a page as markdown. The arXiv skill searches preprints and downloads PDFs, Semantic Scholar covers published venue papers and citation counts, and the Exa skill needs an EXA_API_KEY.
Are the results safe to trust?
Treat them as leads, not verified facts. Snippets and fetched pages are unvetted web text that could be misleading or contain injected instructions. The skill is designed not to follow instructions found inside results, but you should still check sources.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Use this skill if you want general web results or clean markdown from a known page without setting up a search API key, and you have Python 3 and the ARIS helper in place. Pick a different tool if you need peer-reviewed papers by venue or citation count, guaranteed rate limits for high-volume searching, or results you can rely on without checking the source.
Download the skill