On-Demand-Books

io.github.gmlewisPublished by GitHub account gmlewisv0.2.0Updated Oct 27, 2026

Find personalized puzzle books by first name from a 100,000+ title Shopify catalog.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBusiness & Commerce

Overview

AI-generated overview

Searches a 100,000+ title Shopify catalog of personalized puzzle books by first name and returns purchase links, cover images and ISBNs.

What you can do
  • Search personalized puzzle books by a recipient's first name, with exact and similar-name matches
  • Suggest available first names, optionally filtered by a prefix, when the spelling is uncertain
  • Re-resolve a single book's purchase link, cover image and ISBN from its product handle
  • Return direct Shopify purchase links, cover images and ISBNs for each matching book
When to use it
Useful when someone is choosing a personalized gift, such as a birthday present for a child, and wants puzzle books printed with a specific first name. It helps an assistant check availability for a name, suggest alternatives, and hand over a direct purchase link.
Requirements
A remote Streamable HTTP endpoint; no installation, account, API key or environment variable is declared. The client must support the Streamable HTTP transport.
Before you install
Results point to a third-party Shopify store, and the assistant hands the buyer a purchase link rather than completing any purchase itself. Search terms (first names) are sent to the server and its upstream search API. No authentication is declared, so treat the endpoint as public.

Installation

In SourceWeft

  1. Open On-Demand-Books in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.gmlewis%2Fon-demand-books/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "on-demand-books": {
      "type": "http",
      "url": "https://on-demand-books-dq2yvpdh.fermyon.app/"
    }
  }
}

README

on-demand-books MCP Server

An MCP (Model Context Protocol) server that helps AI agents find the perfect personalized puzzle book gift from a catalog of 100,853 customized books available on the On-Demand-Books Shopify store.

Add this server to any MCP-compatible AI agent (Claude Desktop, opencode, etc.) and your agent will be able to search for books by the recipient's first name and hand the buyer a direct Shopify purchase link.

Demo

[on-demand-books MCP demo]

Tools provided

ToolPurpose
search_booksSearch the 100k+ personalized catalog by first name. Returns up to 9 matching books (mazes, name-sudokus, word searches across 3 difficulty levels) with direct Shopify purchase URLs, cover images, and ISBNs. Distinguishes exact matches from similar-name matches.
suggest_namesSuggest popular first names for which books are available, optionally filtered by a prefix. Use when a buyer is unsure of a spelling or wants gift-recipient ideas.
get_bookRe-resolve a single book's Shopify purchase URL from its product handle (as returned by search_books).

Live endpoint

https://on-demand-books-dq2yvpdh.fermyon.app/

Hosted on Fermyon Cloud as a Spin + WebAssembly component built with the wasmcp toolkit.

Add to your MCP client

Claude Desktop / Claude Code (claude_desktop_config.json)

json
{  "mcpServers": {    "on-demand-books": {      "url": "https://on-demand-books-dq2yvpdh.fermyon.app/"    }  }}

opencode (opencode.json)

json
{  "mcp": {    "on-demand-books": {      "type": "http",      "url": "https://on-demand-books-dq2yvpdh.fermyon.app/"    }  }}

Other MCP clients

Point any MCP client that supports the Streamable HTTP transport at the live endpoint above. The server follows the MCP 2025-11-25 spec.

Example agent usage

User: I need a birthday gift for my niece Susan. She likes puzzles.

Agent calls search_books({ "name": "Susan" }) and replies:

Great news — there are 9 personalized puzzle books for Susan, including "Fun Mazes for Susan — Easy to Medium" and "Fun Name Sudokus for Susan — Hard to Insane". Here's a direct link to the first one: https://on-demand-books.com/products/vz5ygw — add it to your cart and check out on Shopify.

Build & run locally

bash
make setup  # Install wasm32-wasip2 targetmake build  # Output: target/wasm32-wasip2/release/on_demand_books.wasmwasmcp compose server target/wasm32-wasip2/release/on_demand_books.wasm -o server.wasm --forcespin up --listen 127.0.0.1:8765   # http://127.0.0.1:8765/

Smoke test with curl:

bash
curl -X POST http://127.0.0.1:8765 -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -X POST http://127.0.0.1:8765 -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
curl -X POST http://127.0.0.1:8765 -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_books","arguments":{"name":"susan"}}}'

Deploy

bash
spin deploy

Implementation

This component uses the capability pattern from wasmcp, implementing just two methods from the tools-capability interface:

  • list_tools() — declares the three tools above.
  • call_tool() — dispatches to the right tool handler and returns the result.

The wasmcp compose CLI wraps the component with the tools-middleware that handles MCP protocol translation, request delegation, and response formatting.

Outbound HTTP to the search API uses the WASI HTTP outgoing-handler interface (not raw sockets) so the component runs correctly on Fermyon Cloud.

See src/lib.rs for the full implementation.

Architecture

MCP client (Claude / opencode / ...)        │  HTTPS (MCP Streamable HTTP transport)        ▼Fermyon Cloud  →  server.wasm  (composed by wasmcp)        │        ├─ transport.wasm        (HTTP transport, MCP framing)        ├─ tools_middleware.wasm (MCP protocol → tool dispatch)        └─ on_demand_books.wasm  ← THIS COMPONENT                │                │  WASI HTTP outgoing-handler                ▼        https://on-demand-books-com-kzfxdscz.fermyon.app/search/{name}                │                ▼  returns book metadata        https://on-demand-books.com/products/{handle}  (Shopify store)

Source: README.md at commit a557047

Tools

3

search_books

On-Demand-Books: Search Personalized Books

Search for personalized puzzle books by first name. Returns matching books with direct Shopify purchase links, cover images, and ISBNs. A typical exact match returns 9 books across 3 puzzle types (mazes, name-sudokus, word searches) and 3 difficulty levels. When no exact match exists, returns similarly-named books. Use this whenever a user is shopping for a personalized gift and knows the recipient's first name.

Parametersnamerequiredutm_source

suggest_names

On-Demand-Books: Suggest Available Names

Suggest first names for which personalized puzzle books are likely available. Use this when a user is unsure of a spelling, wants gift-recipient ideas, or only has part of a name. Returns popular available names, optionally filtered by a case-insensitive prefix. To confirm a specific name has matching books, follow up with `search_books`.

Parameterslimitprefix

get_book

On-Demand-Books: Get Book by Handle

Re-resolve a single book's purchase URL, cover image, and ISBN from its Shopify product handle. Use this to refresh or re-reference a book across turns without re-running the full name search.

Parametershandlerequiredutm_source

Version history

1
  1. v0.2.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts