{"ok":true,"site":{"host":"sunprema.github.io","url":"https://sunprema.github.io/books/","type":"live","desc":"The BookBank Library","tools":[{"name":"search_books","kind":"answer","impl":"imperative","description":"Search the BookBank Library catalog by title, topic, chapter titles, summary or narrator voice. Returns matching books (best first) with their ids, which the other tools take. An empty query lists the newest books.","title":"Search the library","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words to look for; every word must match somewhere in the book."},"voice":{"type":"string","description":"Only books told in this narrator voice (an id or name from list_voices)."},"limit":{"type":"integer","description":"Maximum results (default 12, max 50)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"list_voices","kind":"answer","impl":"imperative","description":"List the narrator voices (personas) books in this library are written in, with how many books each has.","title":"List narrator voices","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"get_book","kind":"answer","impl":"imperative","description":"Get one book’s full outline: summary, narrator voice, every chapter with its URL, the cheatsheet URL, and whether it is saved offline.","title":"Get a book’s outline","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id (or exact title) from search_books."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"filter_shelf","kind":"act","impl":"imperative","description":"Filter the shelf the user is looking at, exactly as typing in the search box and picking a voice chip would. Call with no arguments to show everything again. Returns how many books are now visible.","title":"Filter the visible shelf","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Text filter (matches title, topic, voice, summary)."},"voice":{"type":"string","description":"Voice id from list_voices, or empty for all voices."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"open_book","kind":"act","impl":"imperative","description":"Navigate this tab to a book’s contents page, or straight to one of its chapters (by number, id, or title) or its cheatsheet.","title":"Open a book","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id from search_books."},"chapter":{"type":"string","description":"Optional: chapter number, chapter id, part of a chapter title, or \"cheatsheet\"."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"save_book_offline","kind":"act","impl":"imperative","description":"Download a whole book into this browser’s offline cache (same as the card’s \"⤓ Offline\" button) so it can be read without a network. Resolves when the download finishes.","title":"Save a book offline","annotations":{"readOnlyHint":false},"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","page":"/books/","pages":["/books/"]},{"name":"remove_offline_book","kind":"transact","impl":"imperative","description":"Delete a book’s offline copy from this browser’s cache.","title":"Remove an offline copy","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The book id."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"list_offline_books","kind":"answer","impl":"imperative","description":"List the books saved in this browser’s offline cache.","title":"List offline books","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/","pages":["/books/"]},{"name":"get_book_outline","kind":"answer","impl":"imperative","description":"The book the user has open: title, summary, narrator voice, every chapter with its URL, the contents/cheatsheet/library URLs, and which page this document is.","title":"Outline of this book","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"get_page_text","kind":"answer","impl":"imperative","description":"The readable text of the page the user has open (the whole chapter, not just the visible spread), with navigation chrome removed. Use it to summarize, explain, quiz or translate what the user is reading.","title":"Read this page","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"maxChars":{"type":"integer","description":"Truncate to this many characters (default 12000, max 60000)."},"offset":{"type":"integer","description":"Start this many characters in (for paging through a long chapter)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"find_in_book","kind":"answer","impl":"imperative","description":"Search every chapter (and the cheatsheet) of the book the user has open for some words. Returns the chapters that mention them, best first, with short snippets and URLs.","title":"Search this book","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words to look for (case-insensitive)."},"limit":{"type":"integer","description":"Maximum chapters to return (default 8, max 30)."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"go_to_chapter","kind":"act","impl":"imperative","description":"Navigate this tab to another part of the open book: a chapter by number, id or part of its title, or \"contents\", \"cheatsheet\" or \"library\".","title":"Go to a chapter","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"chapter":{"type":"string","description":"Chapter number (1-based), chapter id, part of a chapter title, or one of \"contents\", \"cheatsheet\", \"library\"."}},"required":["chapter"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"next_page","kind":"act","impl":"imperative","description":"Turn to the next two-page spread of the open chapter; at the end of a chapter this goes on to the next chapter.","title":"Next page","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"previous_page","kind":"act","impl":"imperative","description":"Turn back to the previous spread; at the start of a chapter this goes back to the end of the previous chapter.","title":"Previous page","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]},{"name":"open_library","kind":"act","impl":"imperative","description":"Leave this book and navigate to the BookBank Library shelf, where all books can be searched.","title":"Back to the library","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/books/books/understanding-apache-iceberg/","pages":["/books/books/understanding-apache-iceberg/","/books/books/oracle-dba/","/books/books/nix/","/books/books/software-design-philosophies/","/books/books/fi-domain/"]}],"category":"Media & Personal","favicon":"/favicons/sunprema.github.io.png","apiSurface":"spec","toolCount":15}}