Search, browse, and look up books on Books Mandala (Nepal's largest dedicated online bookstore, 50,000+ titles including deep Nepali / South-Asian literature). Returns title, authors, ISBN, NPR price, stock status, genres, and a canonical purchase URL. Uses Books Mandala's public MCP server (no auth) by default, with REST API and browser fallbacks documented.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionfind-productExecute the skills CLI command in your project's root directory to begin installation:
Fetches find-product from booksmandala.com/find-product-9iiu37 and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate find-product. Access via /find-product in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | find-product |
| title | Books Mandala — Find a Book |
| description | >- Search, browse, and look up books on Books Mandala (Nepal's largest dedicated online bookstore, 50,000+ titles including deep Nepali / South-Asian literature). Returns title, authors, ISBN, NPR price, stock status, genres, and a canonical purchase URL. Uses Books Mandala's public MCP server (no auth) by default, with REST API and browser fallbacks documented. |
| website | booksmandala.com |
| category | shopping |
| tags | - books - ecommerce - nepal - mcp - catalog-search - south-asia - read-only |
| source | 'browserbase: agent-runtime 2026-05-20' |
| updated | '2026-05-20' |
| recommended_method | mcp |
| alternative_methods | - method: api rationale: >- Books Mandala publishes a documented REST API at https://booksmandala.com/api/agent/v1 with the same 7 operations as the MCP, returning clean JSON Book objects. Requires an X-API-Key header (request a key via [email protected]). Use this when you need typed JSON output instead of the MCP's Markdown text blocks. - method: browser rationale: >- When neither the MCP nor an API key is available. Site is Next.js SSR with no anti-bot — a bare Browserbase session works. Search must go through the Ctrl+K modal (the /search?q= URL is a 404); genre and book-detail URLs are directly navigable. |
| verified | false |
| proxies | true |
Search, browse, and look up books from Books Mandala — Nepal's largest dedicated online bookstore (50,000+ titles, with deep coverage of Nepali / Hindi / Sanskrit / South-Asian literature and international bestsellers). Returns title, author(s), ISBN, formatted NPR price + numeric value, stock status (in / out), genres, description, and a canonical booksmandala.com/books/{slug}-{id} purchase link for each match. Read-only — never adds to cart, places an order, or hits authenticated endpoints.
nepali-literature genre", "everything by Buddhisagar".booksmandala.com HTML — the MCP / API path is ~100× cheaper and structurally more reliable than rendering the Next.js front-end.Books Mandala ships three machine-friendly surfaces; pick in this order of preference:
https://bm-agent-mcp.booksmandala.workers.dev/mcp. Public, no API key required, 7 tools covering every browse / lookup use case. Streamable HTTP, MCP protocol 2025-03-26.https://booksmandala.com/api/agent/v1. Same 7 operations as the MCP, returns clean JSON, but every endpoint except /health and /docs requires an X-API-Key header. Keys are issued by emailing [email protected]. Rate limit 100 req/min per key.If your agent host (Claude Desktop, Cursor, etc.) supports MCP config, just add it:
{
"mcpServers": {
"books-mandala": {
"url": "https://bm-agent-mcp.booksmandala.workers.dev/mcp"
}
}
}
If you're a code-driven agent without a built-in MCP client, talk to it over plain HTTP with two POSTs (initialize + tools/call). The server returns SSE-framed JSON-RPC responses (event: message\ndata: {...}\n\n):
# 1. Initialize → server returns an mcp-session-id header you must echo on subsequent calls
INIT=$(curl -s -D - -X POST https://bm-agent-mcp.booksmandala.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}')
MCP_SID=$(printf '%s' "$INIT" | grep -i '^mcp-session-id:' | awk '{print $2}' | tr -d '\r')
# 2. (optional but spec-compliant) — fire-and-forget initialized notification
curl -s -X POST https://bm-agent-mcp.booksmandala.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $MCP_SID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
# 3. Call a tool — search_books, get_book, list_genres, browse_genre, bestsellers, new_arrivals, get_author
curl -s -X POST https://bm-agent-mcp.booksmandala.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $MCP_SID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_books","arguments":{"query":"palpasa cafe","limit":3}}}'
The 7 MCP tools and when to use each:
| Tool | Required args | Use for |
|---|---|---|
search_books | query (min 2 chars) | Lookup by title / author / ISBN. Optional: page (default 1), limit (default 20, max 50). |
get_book | identifier (ISBN or slug) | Full details for one book — publisher, pages, edition, weight, rating, full description. Slug is the part of the URL between /books/ and the trailing -{id} (e.g. atomic-habits for /books/atomic-habits-15626) — though either the bare slug or the full slug-id resolves. ISBN-13 also works. |
list_genres | — | All 177 genres with their parent category (e.g. nepali-literature → parent nepali). Returns slugs you feed into browse_genre. |
browse_genre | genre_slug | Paged list of books in a genre. |
bestsellers | — | Current top sellers, paged. |
new_arrivals | — | Books added in the last 45 days, paged. |
get_author | author_slug | Author bio + their books. Slugs are kebab-case author names (e.g. james-clear, narayan-wagle, buddhisagar); the same slug appears in https://booksmandala.com/author/{slug} URLs. |
Response shape. Every tool returns {"content": [{"type": "text", "text": "..."}]} — a single Markdown-formatted text block, NOT structured JSON book objects. Each book entry looks like:
**Palpasa Cafe**
by Narayan Wagle
Price: NPR 595 | In Stock
ISBN: 9789937905855
Genres: Nepali, Nepali Literature
<full description>
Buy: https://booksmandala.com/palpasa-cafe-2739
If your downstream system needs structured fields, parse with a per-entry block split on \n---\n and a regex pass per line (^by\s+(.+)$, ^Price:\s+(NPR \d[\d,]*)\s*\|\s*(In Stock|Out of Stock)$, ^ISBN:\s+(\d+)$, etc.). For machine-clean JSON, use the REST API instead.
Same operations as the MCP but with structured Book objects. Request a key from [email protected], then:
curl -s -H "X-API-Key: $BM_KEY" \
"https://booksmandala.com/api/agent/v1/search?q=palpasa+cafe&limit=3"
Endpoints (all GET, all under https://booksmandala.com/api/agent/v1):
| Path | Notes |
|---|---|
/search?q=<text> | min q length 2; page, limit (max 50) |
/books/{isbn-or-slug} | full BookDetail |
/genres | flat list |
/genres/{slug}/books | paged |
/bestsellers | paged |
/new-arrivals | paged |
/authors/{slug} | author + books |
/health | no auth |
/docs | no auth — full OpenAPI 3.0 spec |
The OpenAPI spec at /docs defines the canonical Book / BookDetail schemas — fetch it once and use it as your typed contract. Without X-API-Key, every non-/health / non-/docs endpoint returns HTTP 401 {"error":"API key required...","code":"AUTH_REQUIRED"}.
Bare session is fine (no Akamai, no proxies, no stealth needed):
sid=$(browse cloud sessions create --keep-alive | jq -r .id)
export BROWSE_SESSION="$sid"
Three browser sub-flows depending on intent:
Search — the homepage has no ?q= URL param. /search?q=... is a 404. Search is a Ctrl+K modal that fires inline typeahead results:
browse open "https://booksmandala.com/" --remote
browse wait load --remote
# Click the "What do you want to read ? Ctrl + K" button (top right of nav)
browse click "button:What do you want to read*" --remote
# Type into the searchbox (don't press Enter — autocomplete renders as you type)
browse fill "searchbox:Search By Title*" "palpasa cafe" --remote
browse wait timeout 2000 --remote
browse snapshot --remote
# urlMap entries shaped like https://booksmandala.com/books/{slug}-{id} are the matches
Genre browse — direct URL works: https://booksmandala.com/books/genres/{genre-slug} (e.g. /books/genres/nepali, /books/genres/fiction-and-literature). Add ?sub_genres={sub} to scope to a sub-genre (e.g. /books/genres/self-improvement-and-relationships?sub_genres=self-help). Genre slugs match list_genres output exactly.
Book detail — https://booksmandala.com/books/{slug}-{id}. Either browse get markdown body to get clean Markdown of the page, or grep the raw HTML for "@type":"Book" — the Next.js hydration payload embeds JSON-LD with the full schema.org Book object (title, image, ISBN, description, publisher, price NPR, availability, aggregateRating). Note the JSON-LD is embedded inside a <script>self.__next_f.push(...)</script> Next.js streaming chunk, not a clean <script type="application/ld+json"> tag — use a substring search for "@type":"Book" then carve from the surrounding object literal.
Release the session when done: browse cloud sessions update "$sid" --status REQUEST_RELEASE.
bm-agent-mcp.booksmandala.workers.dev requires no auth header, no client registration, no OAuth. Verified 2026-05-20: a cold initialize from a fresh Browserbase IP returned protocolVersion 2025-03-26 and a session id in the first response. The REST API at /api/agent/v1 is the surface that requires X-API-Key; the MCP is the unauthenticated mirror.{"type":"text","text":"..."} block formatted for human/LLM reading. If you need typed fields, either (a) regex-parse the text block, or (b) switch to the REST API which returns proper {"data": Book, "meta": {...}} JSON.event: message\ndata: <json>\n\n. If your HTTP client treats the body as plain JSON it will fail to parse — strip the event: / data: prefixes first, or use a real MCP client. Also: you MUST send Accept: application/json, text/event-stream (both) on every POST; sending only application/json is rejected.initialize. The server sets mcp-session-id: <hex> in the response headers of the initialize call; echo it back as the mcp-session-id request header on every subsequent tools/call / tools/list. Calls without it return an MCP protocol error.X-Ratelimit-Limit: 20 on the /docs endpoint, and the documented per-key rate is 100/min. Don't loop on /docs — fetch it once, cache it./books/{slug} (plural), not /book/{slug} (singular). The llms.txt at https://booksmandala.com/llms.txt documents the singular form; the live site serves the plural. All MCP Buy: links and the front-end's urlMap use plural./books/{kebab-title}-{id} (e.g. /books/palpasa-cafe-2739, /books/atomic-habits-15626). The get_book tool accepts either ISBN-13, the bare slug, or the full slug-with-id.$1.56 while bestsellers MCP returns NPR 209. If you're routing the user to the front-end for purchase, surface both — the user may see a different display currency./search?q=... is a 404 page. The site has no URL-routed search. Browser fallback for search MUST go through the Ctrl+K modal (see workflow). The search button has accessible name "What do you want to read ? Ctrl + K".browse snapshot after fill (with a 1–2s wait for the debounce) and read result anchors from the urlMap. Pressing Enter just submits without going anywhere useful.<script type="application/ld+json"> tags. A naive grep '<script[^>]*ld+json' finds nothing parseable. Search for the literal string "@type":"Book" and carve the enclosing {...} — or just use browse get markdown body, which gives a clean prose version of the same data.cf-ray header present) but no challenges, no captcha, no IP-based blocking observed. A bare Browserbase session loads the homepage and any deep link cleanly. --proxies and --verified are NOT required for any of the three paths.get_book description fields can contain Nepali (Devanagari) script and the MCP / API both preserve UTF-8 correctly. Don't assume ASCII-only output when displaying descriptions.llms.txt and llms-full.txt are the canonical reference. https://booksmandala.com/llms.txt is the short overview; https://booksmandala.com/llms-full.txt is the full catalog + taxonomy + tech doc. Both update; pull them at runtime if you need the genre tree or the latest endpoint list.When the caller asks "find {query} on Books Mandala", normalize to this shape regardless of which path you used:
{
"query": "palpasa cafe",
"method": "mcp",
"total_results": 3,
"page": 1,
"books": [
{
"title": "Palpasa Cafe",
"authors": ["Narayan Wagle"],
"isbn": "9789937905855",
"price": "NPR 595",
"price_value": 595,
"currency": "NPR",
"in_stock": true,
"genres": ["Nepali", "Nepali Literature"],
"description": "Felicitated by Madan Purashkar in the year 2005…",
"url": "https://booksmandala.com/books/palpasa-cafe-2739"
}
]
}
For a single-book detail lookup (get_book / /books/{id}):
{
"method": "mcp",
"book": {
"title": "Palpasa Cafe",
"alternate_title": "पल्पसा क्याफे",
"authors": ["Narayan Wagle"],
"isbn": "9789937905855",
"publisher": "Nepalaya",
"pages": 286,
"cover_type": "paper back",
"edition": "1",
"weight_grams": 240,
"languages": ["Nepali"],
"genres": ["Nepali", "Nepali Literature"],
"average_rating": 5,
"reviews_count": 1,
"price": "NPR 595",
"price_value": 595,
"currency": "NPR",
"in_stock": true,
"description": "…full text…",
"url": "https://booksmandala.com/books/palpasa-cafe-2739"
}
}
Empty / not-found result:
{
"query": "definitely not a real book xyz",
"method": "mcp",
"total_results": 0,
"books": []
}
Always include the canonical https://booksmandala.com/books/{slug}-{id} URL on every result so the caller has a one-click path to the purchase page. Prices are NPR; surface conversion to the user's locale on the caller side if needed.
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
aliexpress.com/search-product-p0h8a7
ruwangi.com/ruwangi-parfum-laki-laki-ko0z5t
shopmeskills/mcp
aradotso/trending-skills
booking.com/search-hotels-asq6cc
apify/agent-skills
We added find-product from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
I recommend find-product for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Keeps context tight: find-product is the kind of skill you can hand to a new teammate without a long onboarding doc.
find-product is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Keeps context tight: find-product is the kind of skill you can hand to a new teammate without a long onboarding doc.
Useful defaults in find-product — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Solid pick for teams standardizing on skills: find-product is focused, and the summary matches what you get after install.
Registry listing for find-product matched our evaluation — installs cleanly and behaves as described in the markdown.
find-product reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for find-product matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 66