{"ok":true,"site":{"host":"digitalbook.io","url":"https://www.digitalbook.io/","type":"live","category":"Media & Personal","desc":"Free audiobook and ebook library for listening and reading online without sign-in or subscription, with a mobile app for offline use.","tools":[{"name":"search_books","kind":"answer","impl":"imperative","description":"Search Digitalbook's own catalogue of free audiobooks and ebooks by keyword, title or author. Returns the matches plus a link to the full results page, which also merges partner titles (Amazon, Apple, Google, Open Library) for the reader’s market — those are not in this tool’s reply.","title":"Search books","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What to search for."},"format":{"type":"string","enum":["audiobook","ebook"],"description":"Defaults to audiobook."},"field":{"type":"string","enum":["keywords","title","author"],"description":"Which field to match. Defaults to keywords."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_shelf","kind":"answer","impl":"imperative","description":"List the books on one of the reader's Digitalbook shelves. `liked` are books they saved, `started` books they have started listening to or reading, `purchased` books they have bought, and `viewed` the books viewed on this device — that last one is browser state rather than account state, so it works signed out and does not follow the reader to another device. The other three need a sign-in.","title":"List a shelf","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"shelf":{"type":"string","enum":["liked","started","purchased","viewed"],"description":"Which shelf to list."}},"required":["shelf"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_favorite","kind":"act","impl":"imperative","description":"Save a book to the signed-in reader's Digitalbook liked shelf. Takes the id reported by search_books.","title":"Save a book","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id from search_books."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_favorite","kind":"act","impl":"imperative","description":"Take a book off the signed-in reader's Digitalbook liked shelf. Takes the id reported by search_books or list_shelf.","title":"Unsave a book","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id to unsave."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_sample","kind":"act","impl":"imperative","description":"Open a book's free sample on the reader's own screen — the clip player for an audiobook, the EPUB reader for an ebook. This is the one thing only the page can do, and it changes what the reader is looking at, so call it when they asked to hear or see a book rather than to find out about one. Takes the id reported by search_books or list_shelf.","title":"Play or read a sample","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id to sample."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"close_sample","kind":"act","impl":"imperative","description":"Close whatever `open_sample` opened — the audiobook clip player or the ebook reader. Reports that nothing was open rather than failing.","title":"Close the sample","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_playback","kind":"answer","impl":"imperative","description":"Report the audiobook open on the page: its chapters, which one the player is on, whether it is playing, and how far in. Call this before play_chapter or seek_playback — it is where the chapter numbers those take come from. Reports that no audiobook is open rather than failing.","title":"What is playing","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"play_chapter","kind":"act","impl":"imperative","description":"Start the audiobook on the page playing. `chapter` is the number get_playback lists, counting from 1; leave it out to resume the chapter the player is already on. `at` starts that many seconds in. This plays out loud on the reader's own device, so call it when they asked to listen, not to find something out.","title":"Play a chapter","inputSchema":{"type":"object","properties":{"chapter":{"type":"number","description":"Chapter number from get_playback, counting from 1."},"at":{"type":"number","description":"Seconds from the start of the chapter. Defaults to 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"pause_playback","kind":"act","impl":"imperative","description":"Pause the audiobook playing on the page. The position is kept, so play_chapter with no arguments picks it up again.","title":"Pause the audiobook","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"seek_playback","kind":"act","impl":"imperative","description":"Move the playhead within the chapter the audiobook is on. `to` is seconds from the start of that chapter — get_playback reports where it is now, so skipping forward is that plus however far. Use play_chapter to move to a different chapter.","title":"Move the playhead","inputSchema":{"type":"object","properties":{"to":{"type":"number","description":"Seconds from the start of the current chapter."}},"required":["to"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_market","kind":"act","impl":"imperative","description":"Change which market the reader is browsing (an ISO 3166-1 alpha-2 code). This is reader state rather than a search argument: the Digitalbook catalogue is not market-segmented, but the partner results merged into the search page, the store their Amazon links point at, and the homepage they are served all follow it. Changing it changes what the reader sees, so only call it when they asked.","title":"Change market","inputSchema":{"type":"object","properties":{"market":{"type":"string","description":"One of: AU, CA, FR, DE, GB, IN, IT, ES, US."}},"required":["market"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"apiSurface":"spec","favicon":"/favicons/digitalbook.io.png","toolCount":11}}