Penwright — writing-craft library, guide metadata, and magazine
Ce que fait ce MCP
Provides searchable writing-craft book records, guide metadata, and published multi-voice magazine pieces.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['guide'], 'properties': {'guide': {'type': 'string', 'description': 'Guide slug (e.g. memoir-writing, nonfiction-writing, fiction-writing, getting-published).'}, 'picks': {'type': 'string', 'description': 'One char per debate in order: A, B, or any other char (or omit) for skip.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'guideSlug', 'guideTitle', 'picks', 'libraryIds', 'canonicalUrl', 'guideCanonicalUrl'], 'properties': {'picks': {'type': 'array', 'items': {'type': 'object', 'required': ['debateSlug', 'name', 'pick', 'libraryIds', 'canonicalUrl'], 'properties': {'name': {'type': 'string'}, 'pick': {'enum': ['A', 'B', 'skip'], 'type': 'string'}, 'debateSlug': {'type': 'string'}, 'libraryIds': {'type': 'array', 'items': {'type': 'string'}}, 'canonicalUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'contract': {'type': 'string'}, 'guideSlug': {'type': 'string'}, 'guideTitle': {'type': 'string'}, 'libraryIds': {'type': 'array', 'items': {'type': 'string'}}, 'canonicalUrl': {'type': 'string'}, 'guideCanonicalUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "The Answer's stable id or slug."}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'slug', 'question', 'shortAnswer', 'answer', 'home', 'canonicalUrl', 'citations', 'status', 'access', 'version', 'contentHash', 'generatedBy', 'updatedAt'], 'properties': {'id': {'type': 'string'}, 'home': {'type': 'string'}, 'slug': {'type': 'string'}, 'access': {'type': 'string', 'const': 'free'}, 'answer': {'type': 'string'}, 'status': {'type': 'string'}, 'version': {'type': 'number'}, 'question': {'type': 'string'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['libraryId', 'title'], 'properties': {'claim': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': 'string'}, 'locator': {'type': 'string'}, 'libraryId': {'type': 'string'}}, 'additionalProperties': False}}, 'updatedAt': {'type': 'string'}, 'contentHash': {'type': 'string'}, 'generatedBy': {'type': 'object', 'required': ['authored'], 'properties': {'authored': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'shortAnswer': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}, 'relatedGuides': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'url'], 'properties': {'url': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Debate slug (e.g. memoir-factual-accuracy-or-emotional-truth).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'slug', 'guideSlug', 'guideTitle', 'topic', 'name', 'poles', 'stakes', 'guidance', 'libraryIds', 'canonicalUrl', 'guideCanonicalUrl'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'poles': {'type': 'array', 'items': [{'type': 'string'}, {'type': 'string'}], 'maxItems': 2, 'minItems': 2, 'additionalItems': False}, 'topic': {'type': 'string'}, 'stakes': {'type': ['string', 'null']}, 'contract': {'type': 'string'}, 'guidance': {'type': 'string'}, 'guideSlug': {'type': 'string'}, 'guideTitle': {'type': 'string'}, 'libraryIds': {'type': 'array', 'items': {'type': 'string'}}, 'canonicalUrl': {'type': 'string'}, 'guideCanonicalUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Guide slug (e.g. memoir-writing, fiction-writing, getting-published, self-publishing).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'slug', 'title', 'subtitle', 'guideType', 'access', 'books', 'readingTimeMin', 'updated', 'live', 'canonicalUrl'], 'properties': {'live': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'books': {'type': ['number', 'null']}, 'title': {'type': 'string'}, 'access': {'type': 'string'}, 'updated': {'type': ['string', 'null']}, 'contract': {'type': 'string'}, 'subtitle': {'type': 'string'}, 'guideType': {'type': ['string', 'null']}, 'canonicalUrl': {'type': 'string'}, 'readingTimeMin': {'type': ['number', 'null']}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['libraryId'], 'properties': {'libraryId': {'type': 'string', 'description': 'Library catalog id (e.g. libce6efaa49e6f0175).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'libraryId', 'title', 'author', 'year', 'tags', 'logline', 'pitch', 'canonicalUrl'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'year': {'type': ['number', 'null']}, 'pitch': {'type': ['string', 'null']}, 'title': {'type': 'string'}, 'author': {'type': ['string', 'null']}, 'logline': {'type': ['string', 'null']}, 'contract': {'type': 'string'}, 'libraryId': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Magazine piece slug.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'slug', 'title', 'format', 'question', 'generated', 'sections', 'editor', 'editorCoda', 'canonicalUrl'], 'properties': {'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'editor': {'type': 'object', 'required': ['displayName', 'role'], 'properties': {'role': {'type': 'string'}, 'displayName': {'type': 'string'}}, 'additionalProperties': False}, 'format': {'type': 'string'}, 'contract': {'type': 'string'}, 'question': {'type': 'string'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['writer', 'displayName', 'byline', 'body'], 'properties': {'body': {'type': 'string'}, 'byline': {'type': 'string'}, 'writer': {'type': 'string'}, 'displayName': {'type': 'string'}}, 'additionalProperties': False}}, 'generated': {'type': 'string'}, 'editorCoda': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'description': 'Max answers to return (default 25, capped 200).', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': "Opaque pagination cursor from a previous list_answers call's nextCursor."}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'count', 'nextCursor', 'items'], 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug', 'question', 'shortAnswer', 'answer', 'home', 'canonicalUrl', 'citations', 'status', 'access', 'version', 'contentHash', 'generatedBy', 'updatedAt'], 'properties': {'id': {'type': 'string'}, 'home': {'type': 'string'}, 'slug': {'type': 'string'}, 'access': {'type': 'string', 'const': 'free'}, 'answer': {'type': 'string'}, 'status': {'type': 'string'}, 'version': {'type': 'number'}, 'question': {'type': 'string'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['libraryId', 'title'], 'properties': {'claim': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': 'string'}, 'locator': {'type': 'string'}, 'libraryId': {'type': 'string'}}, 'additionalProperties': False}}, 'updatedAt': {'type': 'string'}, 'contentHash': {'type': 'string'}, 'generatedBy': {'type': 'object', 'required': ['authored'], 'properties': {'authored': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'shortAnswer': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}, 'relatedGuides': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'url'], 'properties': {'url': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'contract': {'type': 'string'}, 'nextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'description': 'Max results to return (default 25, capped 200).', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Free-text query matched against question/answer text.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'query', 'count', 'results'], 'properties': {'count': {'type': 'number'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug', 'question', 'shortAnswer', 'answer', 'home', 'canonicalUrl', 'citations', 'status', 'access', 'version', 'contentHash', 'generatedBy', 'updatedAt'], 'properties': {'id': {'type': 'string'}, 'home': {'type': 'string'}, 'slug': {'type': 'string'}, 'access': {'type': 'string', 'const': 'free'}, 'answer': {'type': 'string'}, 'status': {'type': 'string'}, 'version': {'type': 'number'}, 'question': {'type': 'string'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['libraryId', 'title'], 'properties': {'claim': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': 'string'}, 'locator': {'type': 'string'}, 'libraryId': {'type': 'string'}}, 'additionalProperties': False}}, 'updatedAt': {'type': 'string'}, 'contentHash': {'type': 'string'}, 'generatedBy': {'type': 'object', 'required': ['authored'], 'properties': {'authored': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'shortAnswer': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}, 'relatedGuides': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'url'], 'properties': {'url': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'contract': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'tag': {'type': 'string', 'description': 'Case-insensitive property-tag substring.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max rows to return (default 25, max 100).'}, 'query': {'type': 'string', 'description': 'Case-insensitive title/author substring.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contract', 'query', 'tag', 'total', 'count', 'results'], 'properties': {'tag': {'type': ['string', 'null']}, 'count': {'type': 'number'}, 'query': {'type': ['string', 'null']}, 'total': {'type': 'number'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['libraryId', 'title', 'author', 'year', 'tags', 'canonicalUrl'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'year': {'type': ['number', 'null']}, 'title': {'type': 'string'}, 'author': {'type': ['string', 'null']}, 'libraryId': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'contract': {'type': 'string'}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Comicvine
Provides searchable Comic Vine data for comic characters, issues, volumes, creators, and publishers.
NotebookLM
Manages NotebookLM notebooks and sources, answers source-grounded questions with citations, and generates artifacts such as repor…
Anapioficeandfire
Searches and retrieves structured information about A Song of Ice and Fire books, characters, and houses.
Clevelandart
Searches Cleveland Museum of Art collection artworks, creators, exhibitions, and artwork records.
Archive
Provides access to Internet Archive item metadata and downloadable files for researching and retrieving archived digital material…
Georgia Archives
Searches and browses the National Archives of Georgia library, fonds, and film catalogues, and retrieves parsed archival library …
Artic
Provides Art Institute of Chicago artist, artwork, and exhibition records, including artwork descriptions, metadata, images, and …
Metmuseum
Searches The Metropolitan Museum of Art collection and retrieves detailed artwork metadata, images, artists, and classification i…