Penwright — writing-craft library, guide metadata, and magazine
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read-only access to Penwright's writing-craft book library, grounded guide metadata (card-level...
| Author | ink.penwright |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2199 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Penwright — writing-craft library, guide metadata, and magazine": {
"url": "https://penwright.ink/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (9)
search_libraryread-onlySearch or list Penwright's writing-craft book library by title/author substring and/or property tag. No filters returns the first page.
Parameters:
tag— string — Case-insensitive property-tag substring.limit— integer — Max rows to return (default 25, max 100).query— string — Case-insensitive title/author substring.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_library_workread-onlyReturns one writing-craft library work's bibliographic record and (when profiled) its thesis.
Parameters:
libraryId(required) — string — Library catalog id (e.g. libce6efaa49e6f0175).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_guideread-onlyReturns 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, ….
Parameters:
slug(required) — string — Guide slug (e.g. memoir-writing, fiction-writing, getting-published, self-publishing).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_magazine_pieceread-onlyReturns 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.
Parameters:
slug(required) — string — Magazine piece slug.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_debateread-onlyReturns 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, ….
Parameters:
slug(required) — string — Debate slug (e.g. memoir-factual-accuracy-or-emotional-truth).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
choose_campread-onlyGiven 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.
Parameters:
guide(required) — 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.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_answerread-onlyGet 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.
Parameters:
id(required) — string — The Answer's stable id or slug.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
list_answersread-onlyList Answers (contract v0), paginated with an opaque cursor. Read-only.
Parameters:
limit— integer — Max answers to return (default 25, capped 200).cursor— string — Opaque pagination cursor from a previous list_answers call's nextCursor.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search_answersread-onlySearch Answers by free-text query over question/answer text. Returns contract v0 records. Read-only.
Parameters:
query(required) — string — Free-text query matched against question/answer text.limit— integer — Max results to return (default 25, capped 200).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.