Read-only access to Penwright's writing-craft book library, grounded guide metadata (card-level...
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Given a guide slug and one pick per debate ('A', 'B', or skip, in debate order, as a single string e.g. 'ABAB'), returns which library ids argue the picked side of each debate and the union reading list. Pure compute over public debate data — no book text is generated.
Guide slug (e.g. memoir-writing, nonfiction-writing, fiction-writing, getting-published).
One char per debate in order: A, B, or any other char (or omit) for skip.
Given a guide slug and one pick per debate ('A', 'B', or skip, in debate order, as a single string e.g. 'ABAB'), returns which library ids argue the picked side of each debate and the union reading list. Pure compute over public debate data — no book text is generated.
| Argument | Type | Description |
|---|---|---|
| guide* | string | Guide slug (e.g. memoir-writing, nonfiction-writing, fiction-writing, getting-published). |
| picks | string | One char per debate in order: A, B, or any other char (or omit) for skip. |
{
"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."
}
}
}Get one Answer — question, grounded answer, visible citations — by id or slug, in the Answer contract v0 shape (ANSWERS-PROGRAM.md). Read-only. Returns null if not found.
| Argument | Type | Description |
|---|---|---|
| id* | string | The Answer's stable id or slug. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The Answer's stable id or slug."
}
}
}Returns one debate — a named tension between poles argued by different books on the same capability guide, with stakes, guidance, and the library ids of resolvable authors on either side. Known slugs (38): memoir-sentence-craft-or-structural-architecture-first, memoir-daily-discipline-or-trusting-inspiration, memoir-memoir-for-healing-or-for-readers, memoir-factual-accuracy-or-emotional-truth, memoir-chase-publication-or-intrinsic-reward, ….
| Argument | Type | Description |
|---|---|---|
| slug* | string | Debate slug (e.g. memoir-factual-accuracy-or-emotional-truth). |
{
"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)."
}
}
}Returns one live guide's title, subtitle, access, book count, and reading time — card-level metadata only, never the paid body/depth content. Known slugs (23): memoir-writing, nonfiction-writing, fiction-writing, getting-published, self-publishing, book-marketing, design-a-publication, typography-and-layout, ….
| Argument | Type | Description |
|---|---|---|
| slug* | string | Guide slug (e.g. memoir-writing, fiction-writing, getting-published, self-publishing). |
{
"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)."
}
}
}Returns one writing-craft library work's bibliographic record and (when profiled) its thesis.
| Argument | Type | Description |
|---|---|---|
| libraryId* | string | Library catalog id (e.g. libce6efaa49e6f0175). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"libraryId"
],
"properties": {
"libraryId": {
"type": "string",
"description": "Library catalog id (e.g. libce6efaa49e6f0175)."
}
}
}Returns one published magazine piece's question, per-writer sections, and editor's coda — the same content the human page renders, ungated. Known slugs (1): the-whole-room--my-memoir-keeps-stalling-i-can-write-scenes.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Magazine piece slug. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Magazine piece slug."
}
}
}List Answers (contract v0), paginated with an opaque cursor. Read-only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max answers to return (default 25, capped 200). |
| cursor | string | Opaque pagination cursor from a previous list_answers call's nextCursor. |
{
"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."
}
}
}Search Answers by free-text query over question/answer text. Returns contract v0 records. Read-only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results to return (default 25, capped 200). |
| query* | string | Free-text query matched against question/answer text. |
{
"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."
}
}
}Search or list Penwright's writing-craft book library by title/author substring and/or property tag. No filters returns the first page.
| Argument | Type | Description |
|---|---|---|
| tag | string | Case-insensitive property-tag substring. |
| limit | integer | Max rows to return (default 25, max 100). |
| query | string | Case-insensitive title/author substring. |
{
"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."
}
}
}