{"openapi":"3.1.0","info":{"title":"ISBNdb (BYOK) API","version":"0.1.0","description":"ISBNdb (BYOK) lets an AI assistant read your own ISBNdb data through the ISBNdb API with a key you supply (ISBNdb REST API key). Read-only: 8 tools (get_book, search_books, get_author_books, search_authors, get_publisher_books, search_publishers, get_key_info, get_stats). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-isbndb.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-isbndb/docs"},"termsOfService":"https://connectorbay.com/byok-isbndb/terms"},"servers":[{"url":"https://byok-isbndb.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-isbndb/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_book":{"post":{"operationId":"get_book","summary":"Details of one book by ISBN-10 or ISBN-13: title, publisher, binding, language, pages, authors, subjects, synopsis and c","description":"Details of one book by ISBN-10 or ISBN-13: title, publisher, binding, language, pages, authors, subjects, synopsis and cover. Each call counts against the plan's per-minute and daily quota. Use for \"Show the book with ISBN 9780134093413\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"isbn":{"description":"ISBN-10 or ISBN-13, with or without hyphens.","maxLength":20,"title":"Isbn","type":"string"}},"required":["isbn"],"title":"get_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/search_books":{"post":{"operationId":"search_books","summary":"Search books by text in title, author, subject or all fields, optionally by year, language and publication dates. Each c","description":"Search books by text in title, author, subject or all fields, optionally by year, language and publication dates. Each call counts against the plan's per-minute and daily quota. Use for \"Find books about campbell biology\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Search text (150 characters at most).","maxLength":150,"title":"Query","type":"string"},"column":{"anyOf":[{"enum":["title","author","date_published","subjects"],"type":"string"},{"type":"null"}],"default":null,"description":"Limit the search to one field.","title":"Column"},"year":{"anyOf":[{"maximum":2100,"minimum":1000,"type":"integer"},{"type":"null"}],"default":null,"description":"Only books published in this year.","title":"Year"},"edition":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this edition number.","title":"Edition"},"should_match_all":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to require every word in the title or author.","title":"Should Match All"},"language":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only books in this language, as an ISO 639-3 code such as eng or fra.","title":"Language"},"published_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or after this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published From"},"published_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or before this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published To"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (the API never returns beyond 10,000 results).","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Page Size"}},"required":["query"],"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/get_author_books":{"post":{"operationId":"get_author_books","summary":"Books by an author, given the exact author name. Each call counts against the plan's per-minute and daily quota. Use for","description":"Books by an author, given the exact author name. Each call counts against the plan's per-minute and daily quota. Use for \"List books by Stephen King\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Author name (150 characters at most).","maxLength":150,"title":"Name","type":"string"},"language":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only books in this language, as an ISO 639-3 code such as eng or fra.","title":"Language"},"published_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or after this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published From"},"published_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or before this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published To"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (the API never returns beyond 10,000 results).","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Page Size"}},"required":["name"],"title":"get_author_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/search_authors":{"post":{"operationId":"search_authors","summary":"Search author names that match a text. Each call counts against the plan's per-minute and daily quota. Use for \"Which au","description":"Search author names that match a text. Each call counts against the plan's per-minute and daily quota. Use for \"Which authors are named like 'tolk'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Search text (150 characters at most).","maxLength":150,"title":"Query","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (the API never returns beyond 10,000 results).","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Page Size"}},"required":["query"],"title":"search_authorsArguments","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/get_publisher_books":{"post":{"operationId":"get_publisher_books","summary":"Books from a publisher, given the exact publisher name. Each call counts against the plan's per-minute and daily quota. ","description":"Books from a publisher, given the exact publisher name. Each call counts against the plan's per-minute and daily quota. Use for \"List books from Pearson\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Publisher name (150 characters at most).","maxLength":150,"title":"Name","type":"string"},"language":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only books in this language, as an ISO 639-3 code such as eng or fra.","title":"Language"},"published_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or after this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published From"},"published_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only books published on or before this date (YYYY, YYYY-MM or YYYY-MM-DD).","title":"Published To"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (the API never returns beyond 10,000 results).","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Page Size"}},"required":["name"],"title":"get_publisher_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/search_publishers":{"post":{"operationId":"search_publishers","summary":"Search publisher names that match a text. Each call counts against the plan's per-minute and daily quota. Use for \"Which","description":"Search publisher names that match a text. Each call counts against the plan's per-minute and daily quota. Use for \"Which publishers are named like 'penguin'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Search text (150 characters at most).","maxLength":150,"title":"Query","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (the API never returns beyond 10,000 results).","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100, default 20).","title":"Page Size"}},"required":["query"],"title":"search_publishersArguments","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/get_key_info":{"post":{"operationId":"get_key_info","summary":"Your plan name and how much of the daily request quota is spent and left. Does not count toward the quota. Use for \"How ","description":"Your plan name and how much of the daily request quota is spent and left. Does not count toward the quota. Use for \"How much of my ISBNdb quota is left today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_key_infoArguments","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/get_stats":{"post":{"operationId":"get_stats","summary":"Size of the ISBNdb catalogue: number of books, authors, publishers and subjects. Use for \"How big is the ISBNdb catalogu","description":"Size of the ISBNdb catalogue: number of books, authors, publishers and subjects. Use for \"How big is the ISBNdb catalogue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_statsArguments","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}}}}