Keenable free web search MCP for Claude and Cursor, no API key
A web search and page-fetch service built for agents, with a hosted MCP server at api.keenable.ai/mcp and a REST API that both work without a key. Keyless traffic gets a published 1,000 requests an hour per IP; a free account gets 100,000 requests a month.
Verified factsChecked 2026-10-29
| Price | Keyless calls are free and unmetered. A free account gets 100,000 requests a month (each search or fetch is one credit), then pay as you go at $4 per 1,000 requests. Dedicated capacity is $1 per 1,000 at 100+ requests a second. x402 pay-per-call is $0.01 per search or fetch.3 [Verified 2026-10-29] |
| API key / auth | None needed for the MCP server or the /public endpoints, which require an X-Keenable-Title header instead (our call without it got HTTP 400 “Missing app identifier”). With an account, send X-API-Key or Authorization: Bearer keen_…. Our keyless search, MCP initialize, tools/list and search_web_pages calls on 2026-10-29 returned HTTP 200; /v1/search without a key returned 401.6 [Verified 2026-10-29] |
| Rate limit | Keyless: 1,000 requests an hour and at most 10 a second per IP, shared with everyone on that IP. Authenticated: 10 a second per organization with no hourly cap. Our keyless response carried x-ratelimit-limit: 1000 and x-ratelimit-remaining: 999.4 [Verified 2026-10-29] |
| License / terms | Keenable Terms of Service (last revised Oct 3, 2026). They ban scraping or data mining the service, sharing benchmark results with third parties, and using it for automated decisions in areas such as credit, employment, health care and housing. One clause says the service is for personal use and not for commercial exploitation unless expressly authorized, which sits oddly beside the paid API plans, so check with Keenable before a commercial launch.5 [Verified 2026-10-29] |
| Version status | No beta or preview label on Search, Fetch or the MCP server. The API is versioned under /v1, and Keenable promises at least 90 days’ notice by changelog and email before a breaking change. Its separate SELECT and Agents services are not covered by that policy.1 [Verified 2026-10-29] |
| Tools | Our tools/list on 2026-10-29 returned search_web_pages and fetch_page_content (server keenable-mcp-server 0.2.1). Search returns up to 10 results by default and up to 50 with max_results; a search counts as one request whatever the count.7 [Verified 2026-10-29] |
FeaturesChecked 2026-10-29
| Capability | Value |
|---|---|
| StatusNo beta, preview or GA label on Search, Fetch or the MCP server; /v1 is versioned with 90 days’ notice before breaking changes. | Not published1 [Not published by vendor: checked 2026-10-29 on https://docs.keenable.ai/versioning.md] |
| API key requiredNo key (app title header). Keyless /v1/search/public and MCP calls returned HTTP 200 on 2026-10-29; the public endpoints need X-Keenable-Title or they return 400. | No2 [Verified 2026-10-29 by test request to https://api.keenable.ai/v1/search/public] |
| Free tierFree keyless; 100K/month with account. Keyless calls are unmetered; accounts get 100,000 free requests a month, then $4 per 1,000. | Yes3 [Verified 2026-10-29 on https://keenable.ai/pricing] |
| Rate limitMax 10/second per IP, shared with your IP; with a key, 10/second per organization and no hourly cap. Our response showed x-ratelimit-limit: 1000. | Keyless 1,000/hour per IP4 [Verified 2026-10-29 on https://docs.keenable.ai/rate-limits.md] |
| Official MCP serverHosted, api.keenable.ai/mcp. tools/list run 2026-10-29 returned search_web_pages and fetch_page_content (server 0.2.1). | Yes8 [Verified 2026-10-29 by test request to https://api.keenable.ai/mcp] |
| Official SDKFramework packages (MIT). langchain-keenable (PyPI 0.1.2), @keenable/mastra (npm 0.1.3), @keenable/mcp-server (npm 0.2.1) and a CLI; no general-purpose client SDK. | Yes9 [Verified 2026-10-29 on https://docs.keenable.ai/integrations.md] |
| Data license / termsLast revised Oct 3, 2026: no scraping the service, no sharing benchmark results, no automated consequential decisions. | Keenable Terms of Service5 [Verified 2026-10-29 on https://keenable.ai/terms] |
| Commercial use allowedUnclear: the terms say personal use only unless expressly authorized, while Keenable sells paid API plans. Ask Keenable before commercial use. | Not published5 [Not published by vendor: checked 2026-10-29 on https://keenable.ai/terms] |
| CORS / browser useReflects your Origin. Preflight with a third-party Origin on 2026-10-29 returned 204 echoing it, but X-Keenable-Title is not in the allowed headers; use ?keenable_title= in browsers. | Yes2 [Verified 2026-10-29 by test request to https://api.keenable.ai/v1/search/public] |
| Freshness / coverageResults carry the date Keenable acquired each page; fetch serves the indexed copy unless live=true. | Own index; live fetch optional10 [Verified 2026-10-29 on https://docs.keenable.ai/credits.md] |
What it does
Keenable runs its own web index and sells search and page reading to AI agents. The hosted MCP server at https://api.keenable.ai/mcp answers with no credentials and exposes two tools: search_web_pages, which returns ranked results with titles, URLs and long snippets, and fetch_page_content, which returns a page as clean Markdown. The same two operations are plain HTTP endpoints: POST /v1/search and GET /v1/fetch with a key, or their /public twins without one, where an X-Keenable-Title header naming your app is required. Search has two modes, pro (the default, deeper) and realtime (faster), plus filters for one site, publish date, the date Keenable indexed a page, and point-in-time search over the index as it stood on a past date. Fetch serves Keenable’s indexed copy by default, or the live page with live=true. Keyless calls report no usage and draw on a shared per-IP pool; an API key moves you to per-organization limits and a free monthly allowance. A third route lets an agent with a crypto wallet pay $0.01 per call in USDC over x402, which we did not test.
Working exampleRun 2026-10-29
curl -sS -D - -X POST "https://api.keenable.ai/v1/search/public" \
-H "X-Keenable-Title: My App" \
-H "Content-Type: application/json" \
-d '{"query":"model context protocol specification","mode":"realtime"}'Response (trimmed)
HTTP/2 200 (run 2026-10-29, no key)
x-ratelimit-limit: 1000
x-ratelimit-remaining: 999
x-ratelimit-reset: 2026-10-29T19:40:39.753Z
{"query":"model context protocol specification","mode":"realtime",
"results":[
{"title":"modelcontextprotocol/docs/specification/2026-07-28/index.mdx at main · modelcontextprotocol/modelcontextprotocol",
"url":"https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2026-07-28/index.mdx",
"snippet":"[Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. ..."},
...]}
# Same request without X-Keenable-Title:
HTTP 400 {"error":"Missing app identifier","message":"X-Keenable-Title header is required for token-less requests"}Agent setup
Prompt to give your agent
Use the Keenable MCP server (https://api.keenable.ai/mcp, no key). For my question, run two or three short search_web_pages queries at once, answer from the snippets where they are enough, and call fetch_page_content only on the one or two pages you need exact wording from. Answer in five bullet points, each with its source URL. If you get HTTP 429, stop and tell me rather than retrying in a loop. Question: what are the current free-tier limits of the API I name next?Agent / MCP-style tool snippet
# Claude Code (keyless public tier)
claude mcp add keenable --transport http https://api.keenable.ai/mcp --scope user
# Optional: add --header "X-API-Key: keen_<your_key>" for the free 100K/month account tier
# Codex (also set web_search = "disabled" at the top of ~/.codex/config.toml, or Codex keeps its own search)
codex mcp add keenable --url https://api.keenable.ai/mcp# Cursor: .cursor/mcp.json (Claude Desktop ignores remote "url" entries; add it as a custom connector there)
{
"mcpServers": {
"keenable": { "url": "https://api.keenable.ai/mcp" }
}
}Fit and safety
Good for
- Free web search and page reading for Claude Code, Cursor or Codex with no signup
- Search inside LangChain, LlamaIndex, Mastra or Agno through Keenable’s own packages
- Date-bounded or point-in-time research where you need to know when a page was indexed
Watch out
- Do not ship a product on the keyless tier. The 1,000-an-hour pool is shared with everyone on your IP address, so a busy office, VPN or cloud egress can run it dry; Keenable itself says to use a key past a first look.
- Do not launch a commercial product on it without asking Keenable first. Its Terms of Service say the service is for personal use unless expressly authorized, even though it sells paid API plans.
- Do not use it for automated decisions about credit, jobs, health care, housing, insurance or similar. The terms ban that use.
- Do not publish head-to-head benchmark results of it. The terms forbid giving benchmark results of the service to third parties.
- Do not expect browser calls on the keyless endpoints to work with the header. Our preflight allowed X-API-Key but not X-Keenable-Title, so send the app name as ?keenable_title= instead, or call it from a server.
Alternatives
| Parallel MCP (free) | Keyless hosted search and fetch with typed answers, but an unpublished and tight free limit. |
| Exa hosted MCP | Keyless hosted search and fetch; its free limit is not published either. |
| You.com MCP (free) | Keyless hosted search MCP with a published 100-requests-a-day allowance. |
| TinyFish Search & Fetch | Bigger published daily allowances in exchange for a free account and key. |
FAQ
Is Keenable free?
Yes. Keyless calls cost nothing and are capped at 1,000 an hour per IP. A free account gets 100,000 requests a month; after that it is $4 per 1,000.
How do I add Keenable search to Claude Code?
Run claude mcp add keenable --transport http https://api.keenable.ai/mcp --scope user. No key is needed; add an X-API-Key header later to move to the account tier.
What is the Keenable rate limit?
Without a key, 1,000 requests an hour and 10 a second per IP. With a key, 10 a second per organization and no hourly cap, drawing on 100,000 free requests a month.
Why does the keyless API return 400?
The /public endpoints need an X-Keenable-Title header (or ?keenable_title=) naming your app; without it they return 400 Missing app identifier.
Compare
Put Keenable search API + MCP (free, no key) side by side with other free agent tools on keys, limits, MCP support, licensing and CORS. Open the comparison grid →
SourcesFootnotes
- 1docs.keenable.ai/versioning.mdVerified 2026-10-29
- 2api.keenable.ai/v1/search/publicTested 2026-10-29
- 3keenable.ai/pricingVerified 2026-10-29
- 4docs.keenable.ai/rate-limits.mdVerified 2026-10-29
- 5keenable.ai/termsVerified 2026-10-29
- 6docs.keenable.ai/authentication.mdVerified 2026-10-29
- 7docs.keenable.ai/mcp-server.mdVerified 2026-10-29
- 8api.keenable.ai/mcpTested 2026-10-29
- 9docs.keenable.ai/integrations.mdVerified 2026-10-29
- 10docs.keenable.ai/credits.mdVerified 2026-10-29