openlibrary-mcp-server
Was dieses MCP kann
Searches Open Library books, authors, subjects, works, editions, scanned full text, and cover images.
Tools
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['author_id'], 'properties': {'author_id': {'type': 'string', 'description': 'Open Library Author ID. Format: OLâ\x80¦A (e.g., "OL24638A"). A leading "/authors/" prefix is stripped if provided.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['author_id', 'name', 'photo_ids', 'remote_ids']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bio': {'type': 'string', 'description': 'Author biography. Absent when not provided.'}, 'name': {'type': 'string', 'description': 'Primary author name.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: Author ID does not exist on Open Library, names a record that is not an author (a work or edition OLID), or redirects to no reachable author. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Set when the requested author ID was merged into a different canonical ID.'}, 'author_id': {'type': 'string', 'description': 'Canonical Open Library Author ID (OLâ\x80¦A).'}, 'photo_ids': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Numeric photo IDs. Pass to openlibrary_get_cover_url with target "author" and id_type "id".'}, 'birth_date': {'type': 'string', 'description': 'Birth date string. Absent when not recorded.'}, 'death_date': {'type': 'string', 'description': 'Death date string. Absent when not recorded.'}, 'remote_ids': {'type': 'object', 'properties': {'isni': {'type': 'string', 'description': 'ISNI identifier.'}, 'viaf': {'type': 'string', 'description': 'VIAF identifier.'}, 'wikidata': {'type': 'string', 'description': 'Wikidata entity ID (e.g., Q12345).'}, 'goodreads': {'type': 'string', 'description': 'Goodreads author ID.'}, 'librarything': {'type': 'string', 'description': 'LibraryThing author identifier.'}}, 'description': 'Remote identifiers for cross-referencing with other databases.', 'additionalProperties': False}, 'fuller_name': {'type': 'string', 'description': 'Full name including middle names. Absent when not recorded.'}, 'personal_name': {'type': 'string', 'description': 'Personal or given name. Absent when not recorded.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['author_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max works to return.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'author_id': {'type': 'string', 'description': 'Open Library Author ID (OLâ\x80¦A). A leading "/authors/" prefix is stripped if provided.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'offset', 'author_id', 'works']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: Author ID does not exist on Open Library, names a record that is not an author (a work or edition OLID), or redirects to no reachable author. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'number', 'description': 'Total works by this author.'}, 'works': {'type': 'array', 'items': {'type': 'object', 'required': ['work_id', 'title', 'cover_ids'], 'properties': {'title': {'type': 'string', 'description': 'Work title.'}, 'work_id': {'type': 'string', 'description': 'Open Library Work ID (OLâ\x80¦W). Use for openlibrary_get_work or openlibrary_get_editions.'}, 'cover_ids': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Numeric cover IDs for openlibrary_get_cover_url.'}, 'first_publish_date': {'type': 'string', 'description': 'First publication date string. Absent when not recorded.'}}, 'description': 'A work by this author.', 'additionalProperties': False}, 'description': 'Works by this author, up to limit.'}, 'notice': {'type': 'string', 'description': 'Set when the requested author ID was merged into a different canonical ID.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned result â\x80\x94 echoes the requested offset, so an empty page still records the offset that produced it.'}, 'author_id': {'type': 'string', 'description': 'Open Library Author ID.'}, 'totalCount': {'type': 'number', 'description': 'Total works by this author across all pages.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier', 'id_type'], 'properties': {'size': {'enum': ['S', 'M', 'L'], 'type': 'string', 'default': 'M', 'description': 'Image size. S = small (~45px tall), M = medium (~150px tall), L = large (~400px tall).'}, 'target': {'enum': ['book', 'author'], 'type': 'string', 'default': 'book', 'description': '"book" returns a book cover from covers.openlibrary.org/b/. "author" returns an author photo from covers.openlibrary.org/a/ â\x80\x94 use with id_type "id" (photo_id) or "olid" (author OLID).'}, 'id_type': {'enum': ['id', 'isbn', 'olid'], 'type': 'string', 'description': '"id" is the numeric cover_i / cover ID from search or work results. "isbn" and "olid" look up the cover from those identifiers.'}, 'identifier': {'type': 'string', 'description': 'The identifier value, validated against id_type before the URL is built. For "id": a numeric cover or photo ID from work/edition/author data. For "isbn": 10 or 13 digits, hyphens optional â\x80\x94 an ISBN-10 may end in an X check digit (e.g., 080442957X). For "olid": an edition OLID (OLâ\x80¦M) for target "book", an author OLID (OLâ\x80¦A) for target "author".'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['url', 'note']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'description': 'Direct HTTPS URL to the cover image. The Covers API returns HTTP 200 for all requests â\x80\x94 a 1Ã\x971 placeholder GIF is returned when no cover exists for the identifier.'}, 'note': {'type': 'string', 'description': 'Reminder that the URL always returns HTTP 200; a placeholder GIF is served when no cover exists.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_identifier', 'invalid_target'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_identifier`: The identifier contains path separators, "..", or control characters, or does not match the format its id_type expects. `invalid_target`: The id_type is not valid for the target â\x80\x94 an author photo cannot be resolved by ISBN. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifiers', 'id_type'], 'properties': {'id_type': {'enum': ['isbn', 'oclc', 'lccn', 'olid'], 'type': 'string', 'description': 'Identifier type shared by every entry in identifiers. "isbn" handles both ISBN-10 and ISBN-13. "olid" is the native Open Library edition ID (OLâ\x80¦M). Mixing types within one call is not supported â\x80\x94 issue one call per type.'}, 'identifiers': {'type': 'array', 'items': {'type': 'string', 'description': 'One identifier value. For ISBN: 10 or 13 digits, hyphens optional â\x80\x94 an ISBN-10 may end in an X check digit (e.g., 080442957X). For OCLC: numeric string. For LCCN: string as-is. For OLID: Open Library edition ID (e.g., OL7353617M).'}, 'maxItems': 50, 'minItems': 1, 'description': 'Identifiers to resolve, 1â\x80\x9350, all of the type named by id_type. Resolved editions come back in request order.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['editions', 'unresolved']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found', 'invalid_identifier', 'upstream_unavailable'], 'description': "Machine-readable failure mode. Declared by this tool: `not_found`: No identifier in the batch resolved to an edition. `invalid_identifier`: Every identifier in the batch is malformed for the specified id_type. `upstream_unavailable`: Open Library's batch edition lookup answered with an HTTP error status other than 429, or with an HTML page instead of JSON. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Present when author lookups for some editions failed or were skipped: names those editions, whose authors are missing or shown by author ID. Absent when every lookup completed.'}, 'editions': {'type': 'array', 'items': {'type': 'object', 'required': ['edition_id', 'title', 'authors', 'publishers', 'isbn_10', 'isbn_13', 'oclc', 'lccn', 'lc_classifications', 'cover_ids'], 'properties': {'lccn': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Library of Congress Control Numbers (e.g., "2008478952") â\x80\x94 lookupable identifiers; each one resolves this edition back through this tool with id_type "lccn".'}, 'oclc': {'type': 'array', 'items': {'type': 'string'}, 'description': 'OCLC/WorldCat numbers.'}, 'title': {'type': 'string', 'description': 'Edition title.'}, 'authors': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'source'], 'properties': {'name': {'type': 'string', 'description': 'Author display name.'}, 'source': {'enum': ['edition', 'work'], 'type': 'string', 'description': '"edition" = the attribution is recorded on this edition record. "work" = the edition records no authors of its own and this credit comes from the parent work, which covers every edition of the same text.'}, 'author_id': {'type': 'string', 'description': 'Open Library Author ID (OLâ\x80¦A). Use openlibrary_get_author for bio and details.'}}, 'description': 'An author contributor for this edition.', 'additionalProperties': False}, 'description': 'Authors credited for this edition. Empty when neither the edition nor its parent work records an author, or when the lookup of the parent work failed or was skipped â\x80\x94 the notice names those editions.'}, 'isbn_10': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISBN-10 identifiers.'}, 'isbn_13': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISBN-13 identifiers.'}, 'work_id': {'type': 'string', 'description': 'Parent Work ID (OLâ\x80¦W). Use openlibrary_get_work for work-level metadata.'}, 'language': {'type': 'string', 'description': '3-letter ISO language code (e.g., "eng"). Absent when not recorded.'}, 'cover_ids': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Numeric cover IDs for openlibrary_get_cover_url.'}, 'ebook_url': {'type': 'string', 'description': 'Internet Archive URL for reading/borrowing. Present when an IA item exists.'}, 'edition_id': {'type': 'string', 'description': 'Open Library Edition ID (OLâ\x80¦M).'}, 'page_count': {'type': 'number', 'description': 'Page count. Absent when not recorded.'}, 'publishers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Publisher names.'}, 'description': {'type': 'string', 'description': 'Edition description. Absent when not provided.'}, 'publish_date': {'type': 'string', 'description': 'Publication date string. Absent when not recorded.'}, 'lc_classifications': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Library of Congress call numbers (e.g., "TL685.7 .M366 2008") â\x80\x94 shelving classifications describing the subject, not identifiers. Not usable as a lookup value anywhere.'}}, 'description': 'A resolved edition record.', 'additionalProperties': False}, 'description': 'Editions that resolved, in request order. Shorter than identifiers when any entry missed.'}, 'unresolved': {'type': 'array', 'items': {'type': 'object', 'required': ['identifier', 'reason'], 'properties': {'reason': {'enum': ['not_found', 'invalid_identifier'], 'type': 'string', 'description': '"invalid_identifier" = the value cannot be this id_type and was never sent upstream. "not_found" = well-formed, but Open Library holds no edition under it.'}, 'identifier': {'type': 'string', 'description': 'The identifier as supplied, echoed so it can be matched to the request.'}}, 'description': 'An identifier that produced no edition.', 'additionalProperties': False}, 'description': 'Identifiers that produced no edition. Empty when every identifier resolved; never overlaps editions.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Max editions to return. Prefer 10â\x80\x9320 for exploration.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'work_id': {'type': 'string', 'pattern': '^(?:\\/works\\/)?OL\\d+W$', 'description': 'Open Library Work ID. Format: OLâ\x80¦W (e.g., "OL45804W"), optionally prefixed "/works/". Not an ISBN â\x80\x94 resolve an ISBN to its work with openlibrary_get_edition (id_type "isbn").'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'offset', 'work_id', 'editions']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: Work ID does not exist on Open Library, or it redirects to no reachable work. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'number', 'description': 'Total editions for this work.'}, 'notice': {'type': 'string', 'description': 'Set when the requested work ID was merged into a different canonical ID.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned result â\x80\x94 echoes the requested offset, so an empty page still records the offset that produced it.'}, 'work_id': {'type': 'string', 'description': 'Canonical Open Library Work ID the editions were found under â\x80\x94 differs from the requested work_id when that ID was merged into this work.'}, 'editions': {'type': 'array', 'items': {'type': 'object', 'required': ['edition_id', 'title', 'publishers', 'languages', 'isbn_10', 'isbn_13', 'cover_ids'], 'properties': {'title': {'type': 'string', 'description': 'Edition title (may differ from work title for translated editions).'}, 'isbn_10': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISBN-10 identifiers.'}, 'isbn_13': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISBN-13 identifiers.'}, 'work_id': {'type': 'string', 'description': 'Parent Work ID. Usually matches the top-level work_id.'}, 'cover_ids': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Numeric cover IDs for openlibrary_get_cover_url.'}, 'languages': {'type': 'array', 'items': {'type': 'string'}, 'description': '3-letter ISO language codes (e.g., "eng", "fre").'}, 'edition_id': {'type': 'string', 'description': 'Open Library Edition ID (OLâ\x80¦M). Use for openlibrary_get_edition with id_type "olid".'}, 'page_count': {'type': 'number', 'description': 'Page count. Absent when not recorded.'}, 'publishers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Publisher names.'}, 'publish_date': {'type': 'string', 'description': 'Publication date string (e.g., "2003", "January 2003"). Absent when not recorded.'}}, 'description': 'A single edition of the work.', 'additionalProperties': False}, 'description': 'Editions of the work, up to limit.'}, 'totalCount': {'type': 'number', 'description': 'Total editions for this work across all pages.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['subject'], 'properties': {'limit': {'type': 'integer', 'default': 12, 'maximum': 100, 'minimum': 1, 'description': 'Max works to return. Subject pages typically show 12 at a time.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'subject': {'type': 'string', 'description': 'Subject name. Normalized before lookup â\x80\x94 lowercased with spaces converted to underscores (e.g., "Science Fiction" â\x86\x92 "science_fiction") â\x80\x94 so varying case or spacing does not change the result.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['subject_name', 'subject_key', 'work_count', 'offset', 'works']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'works': {'type': 'array', 'items': {'type': 'object', 'required': ['work_id', 'title', 'author_names', 'edition_count'], 'properties': {'title': {'type': 'string', 'description': 'Work title.'}, 'work_id': {'type': 'string', 'description': 'Open Library Work ID (OLâ\x80¦W).'}, 'cover_id': {'type': 'number', 'description': 'Numeric cover ID. Absent when no cover exists.'}, 'author_names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Author display names.'}, 'edition_count': {'type': 'number', 'description': 'Total editions for this work.'}}, 'description': 'A work under this subject.', 'additionalProperties': False}, 'description': 'Works under this subject, up to limit.'}, 'notice': {'type': 'string', 'description': 'Recovery guidance when work_count is 0 â\x80\x94 echoes the subject and suggests alternatives. Absent when works are found.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned result â\x80\x94 echoes the requested offset, so an empty page still records the offset that produced it.'}, 'totalCount': {'type': 'number', 'description': 'Total works tagged with this subject across all pages.'}, 'work_count': {'type': 'number', 'description': 'Total works tagged with this subject.'}, 'subject_key': {'type': 'string', 'description': 'Normalized subject key (lowercase, underscores).'}, 'subject_name': {'type': 'string', 'description': 'Canonical subject name as stored on Open Library.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'work_id': {'type': 'string', 'pattern': '^(?:\\/works\\/)?OL\\d+W$', 'description': 'Open Library Work ID. Format: OLâ\x80¦W (e.g., "OL45804W"), optionally prefixed "/works/". Not an ISBN â\x80\x94 resolve an ISBN to its work with openlibrary_get_edition (id_type "isbn").'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['work_id', 'title', 'subjects', 'subject_places', 'subject_times', 'subject_people', 'cover_ids', 'author_ids']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: Work ID does not exist on Open Library, or it redirects to no reachable work. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'title': {'type': 'string', 'description': 'Work title.'}, 'notice': {'type': 'string', 'description': 'Set when the requested work ID was merged into a different canonical ID, and when the text output caps a long subject list (naming the omitted count and the complete array in structuredContent). Absent when neither applies.'}, 'created': {'type': 'string', 'description': 'ISO 8601 creation timestamp. Absent when not available.'}, 'work_id': {'type': 'string', 'description': 'Canonical Open Library Work ID (OLâ\x80¦W) â\x80\x94 differs from the requested work_id when that ID was merged into this work.'}, 'subjects': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Subject tags for this work.'}, 'cover_ids': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Numeric cover IDs. Pass to openlibrary_get_cover_url with id_type "id".'}, 'author_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Open Library Author IDs (OLâ\x80¦A). Use openlibrary_get_author for names and bio.'}, 'description': {'type': 'string', 'description': 'Work description or blurb. Absent when not provided.'}, 'last_modified': {'type': 'string', 'description': 'ISO 8601 last-modified timestamp. Absent when not available.'}, 'subject_times': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Time period subjects.'}, 'subject_people': {'type': 'array', 'items': {'type': 'string'}, 'description': 'People subjects.'}, 'subject_places': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Geographic subjects.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Max results to return.'}, 'query': {'type': 'string', 'description': 'Author name search query. Partial names and alternate names work.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'offset', 'authors']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'number', 'description': 'Total matching authors across all pages.'}, 'notice': {'type': 'string', 'description': 'Guidance when the page is empty (how to vary a name that matched nothing, or which offset to retry when offset ran past the end) or when the text output capped a per-author list. Absent when neither applies.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned result â\x80\x94 echoes the requested offset, so an empty page still records the offset that produced it.'}, 'authors': {'type': 'array', 'items': {'type': 'object', 'required': ['author_id', 'name', 'alternate_names', 'work_count', 'top_subjects'], 'properties': {'name': {'type': 'string', 'description': 'Primary author name.'}, 'top_work': {'type': 'string', 'description': "Title of the author's most popular work. Absent when unavailable."}, 'author_id': {'type': 'string', 'description': 'Open Library Author ID (OLâ\x80¦A).'}, 'birth_date': {'type': 'string', 'description': 'Birth date string. Absent when not recorded.'}, 'death_date': {'type': 'string', 'description': 'Death date string. Absent when not recorded.'}, 'work_count': {'type': 'number', 'description': 'Number of works catalogued for this author.'}, 'top_subjects': {'type': 'array', 'items': {'type': 'string'}, 'description': "Most common subject tags across the author's works."}, 'alternate_names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Alternate or transliterated names.'}, 'ratings_average': {'type': 'number', 'description': "Average community rating across the author's works. Absent when no ratings exist."}}, 'description': 'A matching author record.', 'additionalProperties': False}, 'description': 'Matching authors, up to limit.'}, 'totalCount': {'type': 'number', 'description': 'Total matching authors across all pages â\x80\x94 the upstream match count, reported even when this page is empty because offset ran past the end.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'isbn': {'type': 'string', 'description': 'Find works that have editions with this ISBN (10 or 13 digits, hyphens ignored).'}, 'sort': {'enum': ['relevance', 'new', 'old', 'rating', 'editions'], 'type': 'string', 'default': 'relevance', 'description': 'Sort order. "relevance" uses Solr scoring. "new"/"old" sort by first publish year. "rating" by average community rating. "editions" by edition count.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Max results to return. Higher values increase response size; prefer 10â\x80\x9320 for exploration.'}, 'query': {'type': 'string', 'description': 'Full-text search query. Supports Solr field prefixes: title:, author:, subject:, publisher:, isbn:, language:. Omit to use the filter parameters instead.'}, 'title': {'type': 'string', 'description': 'Filter by title. Matched against work title and alternative titles.'}, 'author': {'type': 'string', 'description': 'Filter by author name. Partial names work.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'subject': {'type': 'string', 'description': 'Filter by subject tag (e.g., "science fiction", "history").'}, 'language': {'type': 'string', 'pattern': '^[A-Za-z]{2,3}$', 'description': 'Restrict results to one language. Takes a 3-letter MARC code (e.g., "eng", "fre", "ger", "chi") â\x80\x94 the same vocabulary openlibrary_get_edition and openlibrary_get_editions return. A 2-letter ISO 639-1 code (e.g., "en", "fr") is accepted and translated to its MARC equivalent; an unrecognized 2-letter code is rejected rather than silently ignored. The equivalent in-query form is language:eng.'}, 'publisher': {'type': 'string', 'description': 'Filter by publisher name. Partial names work (e.g., "Penguin").'}, 'include_availability': {'type': 'boolean', 'default': False, 'description': 'Include live reading availability from Internet Archive (borrow/read status). Adds ~200ms latency. Use when the user needs to know if they can read the book online.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'offset', 'works']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['unknown_language_code'], 'description': 'Machine-readable failure mode. Declared by this tool: `unknown_language_code`: A 2-letter language value has no MARC equivalent, so no filter could be applied. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'number', 'description': 'Total matching works across all pages.'}, 'works': {'type': 'array', 'items': {'type': 'object', 'required': ['work_id', 'title', 'author_names', 'author_ids', 'edition_count', 'ebook_access', 'has_fulltext', 'ia_identifiers'], 'properties': {'title': {'type': 'string', 'description': 'Work title.'}, 'work_id': {'type': 'string', 'description': 'Open Library Work ID (OLâ\x80¦W). Use for openlibrary_get_work or openlibrary_get_editions.'}, 'cover_id': {'type': 'number', 'description': 'Numeric cover ID. Pass to openlibrary_get_cover_url with id_type "id". Absent when no cover is available.'}, 'subjects': {'type': 'array', 'items': {'type': 'string'}, 'description': "Every subject tag the search index returned for this work. The text output caps the rendered list; this array is complete. Absent when no subjects are tagged. For the work record's own curated subject lists (places, times, people), use openlibrary_get_work."}, 'author_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Open Library Author IDs (OLâ\x80¦A) for follow-up lookups.'}, 'author_names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Author display names.'}, 'availability': {'anyOf': [{'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'description': 'Availability status from Internet Archive, e.g. "open" (freely readable), "borrow_available", "borrow_unavailable", "private", or "error" (the lending lookup failed, so no flags accompany it). "unknown" when Open Library sent no status.'}, 'is_lendable': {'type': 'boolean', 'description': 'True when the book can be lent. Absent when not reported.'}, 'is_readable': {'type': 'boolean', 'description': 'True when the book is freely readable online. Absent when not reported.'}, 'is_restricted': {'type': 'boolean', 'description': 'True when access is restricted. Absent when not reported.'}, 'is_previewable': {'type': 'boolean', 'description': 'True when a limited preview is available. Absent when not reported.'}, 'available_to_borrow': {'type': 'boolean', 'description': 'True when the book can be borrowed. Absent when not reported.'}, 'available_to_browse': {'type': 'boolean', 'description': 'True when the book can be browsed for free. Absent when not reported.'}, 'openlibrary_edition': {'type': 'string', 'description': 'Edition OLID the availability check was resolved against. Absent when not reported.'}, 'available_to_waitlist': {'type': 'boolean', 'description': 'True when a waitlist is available. Absent when not reported.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Live reading availability from Internet Archive, present when include_availability is true. Open Library leaves flags out for some works â\x80\x94 an absent flag is unknown, not false. Null means no availability was returned for the work: always so without an Internet Archive item, and sometimes so for a work that has one.'}, 'ebook_access': {'enum': ['no_ebook', 'unclassified', 'printdisabled', 'borrowable', 'public'], 'type': 'string', 'description': '"public" = freely readable. "borrowable" = borrow on Internet Archive. "printdisabled" = access for print-disabled users. "no_ebook" = no digital version. "unclassified" = a digital copy may exist but its access tier is not recorded.'}, 'has_fulltext': {'type': 'boolean', 'description': 'True when a full-text version exists on Internet Archive.'}, 'edition_count': {'type': 'number', 'description': 'Total editions catalogued for this work.'}, 'ia_identifiers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Internet Archive item identifiers associated with this work.'}, 'ratings_average': {'type': 'number', 'description': 'Average community rating (1â\x80\x935). Absent when no ratings exist.'}, 'first_publish_year': {'type': 'number', 'description': 'Year of first publication. Absent when unknown.'}}, 'description': 'A work-level result from the search.', 'additionalProperties': False}, 'description': 'Matching works, up to limit.'}, 'notice': {'type': 'string', 'description': 'Guidance when the page is empty (how to broaden a query that matched nothing, or which offset to retry when offset ran past the end) or when the text output capped a per-work list. Absent when neither applies.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned result.'}, 'queryEcho': {'type': 'string', 'description': 'The effective search criteria as the server interpreted them â\x80\x94 query string plus any active field filters. Absent when only a bare query is used.'}, 'totalCount': {'type': 'number', 'description': 'Total matching works across all pages â\x80\x94 the upstream match count, reported even when this page is empty because offset ran past the end.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Max matching items to return. Each carries its own snippets, so higher values grow the response quickly â\x80\x94 prefer 10â\x80\x9320.'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Text to find inside scanned books. Wrap in double quotes for an exact-phrase match (e.g., "the spice must flow"); unquoted terms match independently and return far broader results.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'offset', 'matches']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_unavailable'], 'description': "Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Open Library's full-text search answered HTTP 200 without a result set â\x80\x94 no hits object carrying a total. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'number', 'description': 'Total matching Internet Archive items across all pages.'}, 'notice': {'type': 'string', 'description': 'Guidance when the page is empty (how to broaden a query that matched nothing, or which offset to retry when offset ran past the end) or when the text output capped a per-item snippet list. Absent when neither applies.'}, 'offset': {'type': 'number', 'description': 'Zero-based offset of the first returned match.'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['ia_identifier', 'snippets', 'score'], 'properties': {'score': {'type': 'number', 'description': 'Relevance score from the full-text index. Comparable within one result set only.'}, 'title': {'type': 'string', 'description': 'Item title from Internet Archive metadata. Absent when not recorded.'}, 'creator': {'type': 'string', 'description': 'Author or creator from Internet Archive metadata, as catalogued (e.g., "Burridge, Jay, author"). Absent when not recorded â\x80\x94 genuinely missing on some items, not an error.'}, 'snippets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Passages containing the match, with the upstream highlight markers removed. The text output caps how many are rendered per item; this array is complete.'}, 'ia_identifier': {'type': 'string', 'description': 'Internet Archive item identifier â\x80\x94 readable at https://archive.org/details/{ia_identifier}, and the same value openlibrary_search_books returns in ia_identifiers.'}}, 'description': 'A book whose scanned text contains the query.', 'additionalProperties': False}, 'description': 'Matching items, up to limit, ordered by relevance.'}, 'totalCount': {'type': 'number', 'description': 'Total matching items across all pages â\x80\x94 the upstream match count, reported even when this page is empty because offset ran past the end.'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
concordance
Provides deterministic claim verification and audit receipts, along with Bible references, commentary, geography, indexed knowled…
canton-ccpedia
Searches and explains Canton Network and Daml documentation, governance proposals, forums, code examples, APIs, releases, and eco…
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
api-evangelist
Provides API governance analysis, OpenAPI overlays and version diffs, security-sensitive field classification, code samples, matu…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
website-search
Provides security article search and structured guidance, templates, frameworks, and review criteria for incident response, threa…
The Ainglish Project
Maintains a measured, auditable register of language constructs, proposals, evidence, adoption, contributors, protocols, and rati…
Torah Library
Provides searchable Jewish texts, commentaries, source sheets, dictionaries, manuscripts, calendars, learning schedules, parasha …