{"openapi":"3.1.0","info":{"title":"Stacks API","version":"0.1.0","description":"Books, authors, subjects and ISBNs (Open Library); public-domain ebooks and full text (Project Gutenberg); audiobooks (LibriVox); Internet Archive search, items and Wayback snapshots.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://stacks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/stacks/docs"},"termsOfService":"https://connectorbay.com/stacks/terms"},"servers":[{"url":"https://stacks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/stacks/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/search_books":{"post":{"operationId":"search_books","summary":"Search Open Library's catalogue (40M+ records): title, authors, first publication year, edition count, ISBN, cover,","description":"Search Open Library's catalogue (40M+ records): title, authors, first publication year, edition count, ISBN, cover,\n    subjects, reader rating, median pages, and ebook availability. Use for \"who wrote…\", \"books about…\", \"novels by\n    Ursula Le Guin sorted by rating\", \"free ebooks on gardening\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free words (title, author, topic…).","examples":["dune herbert","sapiens"],"title":"Query"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Title words only.","title":"Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Author name.","title":"Author"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Subject, e.g. 'science fiction', 'cooking'.","title":"Subject"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO 639-2 code, e.g. eng, fre, hin, por.","title":"Language"},"year_from":{"anyOf":[{"maximum":2100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Year From"},"year_to":{"anyOf":[{"maximum":2100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Year To"},"sort":{"default":"relevance","description":"relevance | new | old | rating | editions | readinglog","title":"Sort","type":"string"},"ebooks_only":{"default":false,"description":"Only works with a readable or borrowable ebook.","title":"Ebooks Only","type":"boolean"},"max_results":{"default":10,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"}},"title":"search_booksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/book":{"post":{"operationId":"book","summary":"One book (work) in full: description, authors, subjects/places/people/times, reader rating with distribution,","description":"One book (work) in full: description, authors, subjects/places/people/times, reader rating with distribution,\n    cover, links — plus optional editions. Accepts a work key, an ISBN, or a title (+author). Use for \"tell me about\n    Dune\", \"what is The Left Hand of Darkness about\", \"how is Sapiens rated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Open Library work key (OL893414W) or an ISBN.","examples":["OL893414W","9780441172719"],"title":"Key"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Title, if no key.","examples":["The Left Hand of Darkness"],"title":"Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Author, to disambiguate a title.","title":"Author"},"include_editions":{"default":false,"description":"Also list up to 8 editions (publisher, date, ISBNs).","title":"Include Editions","type":"boolean"}},"title":"bookArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/isbn_lookup":{"post":{"operationId":"isbn_lookup","summary":"An edition by ISBN: title, publisher, publish date and place, pages, format, languages, series, ISBN-10/13,","description":"An edition by ISBN: title, publisher, publish date and place, pages, format, languages, series, ISBN-10/13,\n    LCCN/OCLC/Goodreads ids, cover, and the parent work key. Use for \"what book is ISBN 978…\", \"who published this\n    edition\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"isbn":{"description":"ISBN-10 or ISBN-13 (hyphens allowed).","examples":["9780441172719","0-14-243724-7"],"title":"Isbn","type":"string"}},"required":["isbn"],"title":"isbn_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/author":{"post":{"operationId":"author","summary":"An author: life dates, bio, alternate names, photo, external links (Wikipedia etc.) and their most-published","description":"An author: life dates, bio, alternate names, photo, external links (Wikipedia etc.) and their most-published\n    works with ratings. Use for \"who is Frank Herbert\", \"what did Chinua Achebe write\", \"when was Le Guin born\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Author name.","examples":["Ursula K. Le Guin","Chinua Achebe"],"title":"Name"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Open Library author key, e.g. OL79034A.","title":"Key"}},"title":"authorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/subject":{"post":{"operationId":"subject","summary":"Explore a subject: most-held works, top authors, related subjects, people and places. Use for \"classic science","description":"Explore a subject: most-held works, top authors, related subjects, people and places. Use for \"classic science\n    fiction to start with\", \"who are the main authors on stoicism\", \"subjects related to permaculture\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Subject or genre.","examples":["science fiction","Indian cooking","stoicism"],"title":"Name","type":"string"},"ebooks_only":{"default":false,"description":"Only works with a readable ebook.","title":"Ebooks Only","type":"boolean"},"max_results":{"default":12,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"}},"required":["name"],"title":"subjectArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/trending_books":{"post":{"operationId":"trending_books","summary":"What Open Library readers are logging and reading right now — trending works for the chosen period. Use for","description":"What Open Library readers are logging and reading right now — trending works for the chosen period. Use for\n    \"what books are trending\", \"popular books this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"period":{"default":"daily","description":"now | daily | weekly | monthly | yearly | forever","title":"Period","type":"string"},"max_results":{"default":10,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"}},"title":"trending_booksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/gutenberg_search":{"post":{"operationId":"gutenberg_search","summary":"Search Project Gutenberg's public-domain catalogue (78,000 free ebooks, bundled and searched locally): title,","description":"Search Project Gutenberg's public-domain catalogue (78,000 free ebooks, bundled and searched locally): title,\n    authors with life dates, language, subjects, bookshelves, popularity (30-day downloads where known) and\n    epub/kindle/html/text/cover links. Use for \"free ebook of Frankenstein\", \"popular Gutenberg books in French\",\n    \"children's books on Gutenberg\", \"detective novels by authors alive in 1900\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Title and/or author words.","examples":["frankenstein","jane austen","dickens twist"],"title":"Query"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Subject or bookshelf word: children, detective, philosophy, poetry, science fiction, cookery…","title":"Topic"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter code: en, fr, de, es, pt, it, fi, nl, zh…","title":"Language"},"author_alive_year":{"anyOf":[{"maximum":2100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only authors alive in this year (e.g. 1850).","title":"Author Alive Year"},"max_results":{"default":10,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"},"page":{"default":1,"maximum":100,"minimum":1,"title":"Page","type":"integer"}},"title":"gutenberg_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/gutenberg_book":{"post":{"operationId":"gutenberg_book","summary":"One Gutenberg ebook: catalogue metadata and download links in every format, plus a short summary and live","description":"One Gutenberg ebook: catalogue metadata and download links in every format, plus a short summary and live\n    download count when Gutendex answers in time. Use after gutenberg_search, or with a known number (\"Gutenberg #1342\").","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"book_id":{"description":"Project Gutenberg ebook number.","examples":[84,1342,2701],"minimum":1,"title":"Book Id","type":"integer"}},"required":["book_id"],"title":"gutenberg_bookArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/book_text":{"post":{"operationId":"book_text","summary":"Read a public-domain book's actual text from Project Gutenberg: the chapter list with offsets, a passage from","description":"Read a public-domain book's actual text from Project Gutenberg: the chapter list with offsets, a passage from\n    any offset, or every place a phrase occurs (with context). The Gutenberg header/footer is stripped. Use for \"the\n    first page of Frankenstein\", \"chapter list of Moby Dick\", \"where does 'Reader, I married him' appear in Jane\n    Eyre\", \"read Pride and Prejudice chapter 3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"book_id":{"description":"Project Gutenberg ebook number.","examples":[84,2701],"minimum":1,"title":"Book Id","type":"integer"},"find":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A phrase to locate in the text (case-insensitive).","examples":["call me Ishmael"],"title":"Find"},"offset":{"default":0,"description":"Character offset to read from (0 = start; use a chapter offset).","minimum":0,"title":"Offset","type":"integer"},"length":{"default":2500,"description":"Characters to return (max 6000).","maximum":6000,"minimum":200,"title":"Length","type":"integer"},"chapters_only":{"default":false,"description":"Return only the chapter/part list with offsets.","title":"Chapters Only","type":"boolean"}},"required":["book_id"],"title":"book_textArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/audiobooks":{"post":{"operationId":"audiobooks","summary":"Free public-domain audiobooks from LibriVox: title, authors, language, total runtime, number of sections,","description":"Free public-domain audiobooks from LibriVox: title, authors, language, total runtime, number of sections,\n    description, and links (LibriVox page, Internet Archive page, RSS feed, zip of MP3s, source text). Use for \"is\n    there a free audiobook of Dracula\", \"audiobooks by Jane Austen\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Title words.","examples":["Dracula","Pride and Prejudice"],"title":"Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Author surname or name.","examples":["Austen"],"title":"Author"},"max_results":{"default":8,"maximum":20,"minimum":1,"title":"Max Results","type":"integer"}},"title":"audiobooksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/archive_search":{"post":{"operationId":"archive_search","summary":"Search the Internet Archive (books, audio, film, software, images, web): identifier, title, creator, year,","description":"Search the Internet Archive (books, audio, film, software, images, web): identifier, title, creator, year,\n    mediatype, collections, downloads, description, subjects, size/runtime and link. Use for \"old public-domain films\n    about atomic safety\", \"1920s jazz recordings\", \"scanned copies of Dracula\", \"old-time radio shows\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Words, or a Lucene query (title:dracula AND year:[1900 TO 1930]).","examples":["atomic safety film","title:(dracula)"],"title":"Query","type":"string"},"mediatype":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"texts | audio | movies | software | image | data | web | collection","title":"Mediatype"},"collection":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Collection id, e.g. prelinger, librivoxaudio, americana, opensource_movies, oldtimeradio.","title":"Collection"},"creator":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Creator/author name.","title":"Creator"},"year_from":{"anyOf":[{"maximum":2100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Year From"},"year_to":{"anyOf":[{"maximum":2100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Year To"},"sort":{"default":"downloads desc","description":"downloads desc | date desc | date asc | publicdate desc | titleSorter asc","title":"Sort","type":"string"},"max_results":{"default":10,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"},"page":{"default":1,"maximum":50,"minimum":1,"title":"Page","type":"integer"}},"required":["query"],"title":"archive_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/archive_item":{"post":{"operationId":"archive_item","summary":"One Internet Archive item: full metadata (title, creator, date, publisher, subjects, language, licence, uploader,","description":"One Internet Archive item: full metadata (title, creator, date, publisher, subjects, language, licence, uploader,\n    description), file formats present, and the largest original files with direct download links. Use for \"what's\n    in this archive item\", \"download link for the PDF of…\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"identifier":{"description":"Item identifier or archive.org/details URL.","examples":["dracula00stok","AtomicAl1951"],"title":"Identifier","type":"string"}},"required":["identifier"],"title":"archive_itemArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/wayback":{"post":{"operationId":"wayback","summary":"The Wayback Machine's closest archived snapshot of a URL (optionally near a date): snapshot link, capture time,","description":"The Wayback Machine's closest archived snapshot of a URL (optionally near a date): snapshot link, capture time,\n    HTTP status, and the link to all captures. Use for \"what did example.com look like in 2010\", \"is there an\n    archived copy of this page\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"url":{"description":"Web address to look up.","examples":["example.com","https://nytimes.com"],"title":"Url","type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Wanted date, YYYY-MM-DD or YYYYMMDD (closest capture is returned).","examples":["2010-01-01"],"title":"Date"}},"required":["url"],"title":"waybackArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}