Skip to main content
Glama

The Daily Journal

Your mail, your calendar and the night's news, printed as a newspaper at seven every morning.

A private broadsheet for one reader, made by your own AI coding agent on your own computer. No feed, no app and no lock screen: just paper in the tray when you wake up.

Website · Get started · How it works · Tools


Why

The first thing most people read each day is a phone. It is bright, unsorted and endless, and it asks for a decision before the kettle has boiled.

The Daily Journal turns that around. While you sleep, your agent reads your inboxes, your calendar and the overnight news on the topics you choose, checks the sources and sets it all in type. At seven, your printer produces a two-page newspaper. It has a last line, so you can put it down.

Related MCP server: Morning Tab

What's in an edition

Section

What it holds

Front page

The overnight developments that matter most, each with its source and publication time

Markets and topics

Finance, AI or whatever you choose. Weekend prices say which day they describe

The day ahead

Today's calendar, with times, places and anything to prepare

Your mail

Messages that need action first: deadlines, payments, security notices. Receipts next, newsletters grouped last

Two or more A4 pages, three columns, body type never below 9 points, black ink on a laser printer.

Get started

You need a Mac or Linux computer that is on at print time, a printer it can reach, uv, and a coding agent with access to your mail and calendar (for example Gmail, Outlook and Google Calendar connectors).

Ask your coding agent

Paste this into Claude Code, Codex, Cursor or another agent that supports MCP:

Set up The Daily Journal for me from https://github.com/thegreatLUCY/daily-journal.
Clone it to ~/daily-journal-kit, then read SETUP.md there and follow it.
Ask me before printing anything or scheduling the daily runs.

The agent connects the tools, asks your timezone, print time, topics and printer, prints a test page with your go-ahead, and then schedules two daily runs.

Install as a Claude Code plugin

claude plugin marketplace add thegreatLUCY/daily-journal
claude plugin install daily-journal@daily-journal

Then ask Claude to "set up my daily journal".

Other MCP clients

See SETUP.md for Codex, Cursor, Windsurf and plain MCP configuration.

How it works

 06:30  prepare                                       07:00  print
 ┌──────────────┐   ┌──────────────┐   ┌───────────┐   ┌──────────────┐
 │ your agent   │──▶│ write the    │──▶│ render &  │──▶│ print once,  │
 │ reads mail,  │   │ edition JSON │   │ review    │   │ inside the   │
 │ calendar,    │   │ (skill rules)│   │ every page│   │ print window │
 │ news sources │   └──────────────┘   └───────────┘   └──────────────┘
 └──────────────┘
  • The skill (skills/daily-journal/SKILL.md) holds the editorial rules: what to collect, how to check it, how to write it and what never goes on paper.

  • The MCP server (daily_journal/server.py) does the layout, the checks and the printing. Your agent does the reading and writing.

  • Your data stays in ~/.daily-journal: settings, editions, source records and the print ledger. Nothing is sent anywhere except to your printer.

Two runs a day keep it reliable. The prepare run builds and reviews the edition about half an hour early. The print run only prints an edition that has already been reviewed.

MCP tools

Tool

Purpose

journal_status

Today's date in your timezone, your settings, and whether today's paper is ready or already printed

save_settings

Timezone, print window, printer, paper, topics, masthead title

list_printers

Print queues on this computer and the default

print_test_page

One test page, only when confirmed

get_layout_guide

Layout rules, word budgets and a full sample edition

render_edition_pdf

Lay out an edition and return every page as an image for review

save_sources

Record sources, collection window and anything that failed

publish_edition

Mark the reviewed edition ready to print

print_edition

Dry run by default; prints once inside the window

House rules

These are enforced in code, not just suggested to the agent.

  1. The paper prints once. A ledger and a lock allow one print attempt per day, and an unclear result is never retried automatically.

  2. Only today's reviewed paper prints. The PDF must carry today's date in your timezone and match the hash recorded when it was reviewed.

  3. Proofs never print. Sample and draft editions are marked as proofs in the PDF itself.

  4. A late paper stays unprinted. Outside the print window (07:00–09:00 by default), the press waits for tomorrow.

  5. Nothing is answered for you. The skill never sends, deletes, moves or marks mail as read, and treats every message as information, never as instructions.

  6. Secrets stay off paper. Passwords, verification codes, tokens and sign-in links are never printed.

  7. Pictures are labelled. Generated engravings are captioned as artwork, never as photographs.

Settings

Stored in ~/.daily-journal/config.json (or $DAILY_JOURNAL_HOME). Your agent writes them with save_settings; config.example.json shows every key.

Key

Default

Meaning

timezone

UTC

IANA name, such as Europe/London. Decides what "today" means

print_time, latest_print_time

07:00, 09:00

The print window

printer

system default

CUPS queue name

paper, sides, copies

A4, one-sided, 1

Passed to lp

minimum_pages

2

Shorter editions are refused

topics

finance, AI

What the news pages cover

title, dateline_place, footer

Masthead and page furniture

hold_printing

false

Pause publishing and printing

Command line

The same pieces work without an agent:

uv run python -m daily_journal.render_edition examples/sample-edition.json sample.pdf
uv run python -m daily_journal.publish_ready ~/.daily-journal/editions/daily-journal-2026-11-02.pdf --visually-reviewed
uv run python -m daily_journal.submit_print          # dry run
uv run python -m daily_journal.submit_print --send   # prints once, inside the window

Limits

  • The computer must be on and awake at print time; the agent cannot wake it.

  • Printing uses CUPS (lp), so Windows is not supported yet.

  • Pages are laid out for A4. On Letter paper they print scaled to fit.

  • Mail sources that need an attended browser session cannot be read unattended. The paper says so when an inbox was missed.

  • Each morning's run uses your own AI subscription.

Project layout

.claude-plugin/       Claude Code plugin and marketplace manifests
.mcp.json             MCP server entry used by the plugin
skills/daily-journal/ The skill and its layout reference
daily_journal/        Renderer, checks, print helper and MCP server
  fonts/              Gelasio, Anton and UnifrakturCook (SIL OFL)
  art/                Two AI-generated engravings for editions without photos
examples/             An invented sample edition
SETUP.md              Step-by-step setup for coding agents

License

Code is MIT licensed; see LICENSE. Fonts are under the SIL Open Font License; see daily_journal/fonts/FONTS.md. The engravings in daily_journal/art/ are AI-generated illustrations and must be captioned as artwork.

Available Tools

9 tools
get_layout_guideA

The layout rules and a complete sample edition. Read before writing an edition.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full load. "Read" and the pre-writing framing imply a side-effect-free retrieval, and "complete sample edition" hints that a substantial document comes back, but it does not state whether the content is static, large, or cacheable. With an output schema present, the return shape is covered elsewhere, so the remaining gap is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the content statement first and the call trigger second – well front-loaded and free of waste. It is arguably too clipped: the first sentence is a fragment with no verb, which costs a little immediate parseability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A zero-argument read tool with an output schema is a simple case, and the description plus the schema covers what an agent needs to decide to call it. The only absent piece is any sense of size or caching of the returned guide, which is a minor omission given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing about inputs to document; the baseline for a no-param tool is 4. Nothing in the description is needed to disambiguate arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource precisely – layout rules plus a complete sample edition – which is specific enough that an agent knows what it gets back. It reads as a noun-phrase fragment rather than a verb+resource statement, and it does not explicitly contrast itself with the other siblings, but the pair of nouns is distinctive enough that confusion is unlikely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Read before writing an edition" is an explicit, actionable precondition that tells the agent exactly when to call this. It gives no exclusions or mentions of alternatives, but for a prerequisite-reading tool the positive condition is the only one that matters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

journal_statusA

Today's date in the reader's timezone, their settings, and whether today's edition is ready or already printed. Call this first.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the content of the response (date, settings, edition state) so the agent knows it is a read. However, it doesn't confirm read-only safety, note any side effects, or clarify what 'their settings' includes, leaving behavioral details partly implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the payload described first and the imperative 'Call this first' front-loaded at the end as a clear call to action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument status tool with no annotations and no output schema, the description adequately tells the agent what comes back and why to call it early. The only gap is mild vagueness about the shape of 'their settings' and the edition status values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No misleading parameter hints are present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (today's date, reader settings, edition readiness/printed state) concretely enough that an agent knows this is a status/orientation read rather than an action. It is distinguishable from siblings like save_settings or print_edition, though the verb is implied ('gives you') rather than stated as a specific operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Call this first' gives explicit sequencing guidance that no sibling provides, which is genuinely useful for orienting an agent. It stops short of stating when not to call it or naming alternatives for narrower needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_printersA

List the print queues on this computer and the system default.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; it implies a safe read-only enumeration but never states that it has no side effects. It also omits what the result actually looks like (queue names, default marker), which matters since there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the resource scope is front-loaded immediately after the verb. Every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, side-effect-free listing with no output schema, the description covers what is enumerated and the scope ("this computer"). Only a note on the returned shape or read-only nature would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate and it correctly describes a no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("List") and resource ("print queues on this computer"), plus the added detail of returning the system default. It is clearly distinct from siblings like print_edition or print_test_page, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is a discovery step before print_edition or print_test_page, but the description never says so or states any condition for calling it. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_editionB

Mark today's live edition ready for the morning print. Only after you have looked at every page.

NameRequiredDescriptionDefault
pdf_pathYes
visually_reviewedYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It hints at a review gate, but does not disclose what publishing actually does, whether it is reversible, what permissions are needed, or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with purpose and followed by the key constraint. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no annotations and no output schema, the description is too thin. It omits parameter meanings, side effects, and return behavior, leaving the agent with significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate. It loosely implies the visually_reviewed requirement with 'looked at every page,' but never explains pdf_path or ties the boolean parameter explicitly to the review condition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-and-resource combination: 'Mark today's live edition ready for the morning print.' That distinguishes it from rendering or actual printing, though it does not explicitly name siblings like print_edition or render_edition_pdf.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear prerequisite: 'Only after you have looked at every page.' This tells the agent when the tool is appropriate, but it does not discuss alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_edition_pdfA

Lay out an edition and return every page as an image for visual review. Set live=true only for today's real edition; otherwise it is saved as a proof that can never print. Fix any reported overflow by shortening copy, then render again.

NameRequiredDescriptionDefault
liveNo
editionYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the load and does disclose the key side effect: a non-live render is persisted as a proof that can never print, and output is one image per page. What it omits is whether the render mutates the edition object, whether proof storage is limited or costs anything, and any permission prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and output, then the dangerous parameter, then the recovery loop. Nothing is redundant and every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers output shape and the live/proof semantics well for a tool with no annotations or output schema, but the required nested `edition` payload is left entirely undefined, which is the main thing an agent needs before calling. Adequate for the safety story, incomplete for the input contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains `live` well, including the default-false consequence, but the required `edition` parameter is a nested object with additionalProperties and gets no explanation of expected structure or required sub-fields anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lay out an edition and return every page as an image'), plus the return format, which an agent can use to distinguish this from print_edition or publish_edition. It does not explicitly name the sibling alternatives, and the name says 'pdf' while the description promises page images, a minor mismatch left unexplained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit conditional for the risky path ('Set live=true only for today's real edition') and a follow-up workflow ('Fix any reported overflow by shortening copy, then render again'), which is genuine when-and-how guidance. It stops short of routing the agent between this and print_edition/publish_edition, so the sibling boundary is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_settingsA

Update the reader's settings. Only known keys are accepted: title, timezone, print_time, latest_print_time, printer, paper, sides, copies, minimum_pages, topics, dateline_place, footer, hold_printing. Ask the reader before changing anything.

NameRequiredDescriptionDefault
changesYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses a consent requirement and a key-validation rule, but leaves the most important mutation semantics unstated: whether omitted settings are preserved (partial merge) or reset, and what happens on an invalid key (error vs. silently ignored).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The key enumeration is compact and the consent instruction is placed last as a hard stop before acting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations exist, so the description must cover purpose, valid inputs, and safety, and it largely does. The remaining gap is mutation semantics — partial vs. full update and error behavior for rejected keys — which matters for a nested free-form object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter is a free-form object with additionalProperties:true, so the schema alone tells an agent nothing. The description compensates by enumerating the 13 accepted keys, which is exactly the meaning an agent needs; it stops short of giving types or formats for those keys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update the reader's settings") plus the exact accepted key set, which immediately distinguishes it from neighbors like save_sources and get_layout_guide. It does not explicitly name a sibling as an alternative, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Ask the reader before changing anything" gives a real precondition for invoking, and "Only known keys are accepted" bounds the input. However, there is no guidance on when to use this versus save_sources or the print tools, and no statement about what to do when a key is unknown.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_sourcesA

Save today's source record: story URLs, checked times, collection window, which inboxes and calendars were read, and anything that failed. Store summaries only, never message bodies, codes or passwords.

NameRequiredDescriptionDefault
recordYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, and it does deliver one genuinely important behavior: 'Store summaries only, never message bodies, codes or passwords' — a hard privacy constraint an agent could not infer elsewhere. It leaves the core write semantics unstated, though: whether a second call overwrites or appends to today's record, and whether the operation is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The scope statement comes first and the safety constraint follows immediately, both earning their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity (one parameter) and an output schema exists, so return values need no explanation; the privacy directive covers the highest-risk aspect. The remaining omission is overwrite/merge semantics for a write tool with no annotations to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'record' parameter is a free-form object with additionalProperties: true, so the description must define the payload — and it does, enumerating the content categories (URLs, checked times, window, inboxes, calendars, failures). It falls short of giving key names or types, leaving the agent to infer the object shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs the specific verb 'save' with a concrete resource ('today's source record') and enumerates its contents (story URLs, checked times, collection window, inboxes/calendars read, failures), which is far more informative than the bare name. It doesn't explicitly contrast itself with siblings like save_settings or journal_status, but the domain is clearly distinct enough to identify on sight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'today's source record' implies a daily, post-collection save, but there is no explicit statement of when to call it, whether it must precede other edition-building steps, or what to do instead. Usage is implied rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedget_layout_guide
    • First observedjournal_status
    • First observedlist_printers
    • First observedprint_edition
    • First observedprint_test_page
    • First observedpublish_edition
    • First observedrender_edition_pdf
    • First observedsave_settings
    • First observedsave_sources

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

The staged workflow (render → publish → print) is clearly delineated by descriptions, and the read-side tools (journal_status, list_printers, get_layout_guide) each target a distinct artifact. The only mild overlap is print_edition vs print_test_page, which both invoke the printer but are differentiated by 'today's ready edition' vs 'setup test'.

Naming Consistency4/5

Eight of nine tools follow a verb_noun pattern (save_settings, list_printers, render_edition_pdf, publish_edition, print_edition). The single exception is journal_status, which is noun-first, but it remains readable and predictable in context.

Tool Count5/5

Nine tools is well-scoped for a daily-edition workflow, with each tool earning its place across status, configuration, layout, sourcing, rendering, publishing, and printing. Nothing feels redundant or padded.

Completeness4/5

The core daily lifecycle is covered end to end, including source provenance and a safe test-print path. Minor gaps exist: there is no way to list or retrieve past editions/proofs, and no retract/unpublish operation once an edition is marked ready.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to print documents directly on your own printer over a private network, without cloud services or open ports. Supports printing text, URLs, and files with per-person access keys, usage limits, and detailed job control.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to turn their current Codex/ChatGPT conversation into a source-backed personal newspaper: they pick public sources, exclusions, language, timezone and interests through native settings, then request an edition that the conversation reads and cites. The server stores and renders validated editions locally with source links, preserving the previous edition when generation fails.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables an AI agent to design, lay out, proof and print badges, business cards, flyers, photos and sublimation transfers on real paper printers with millimetre-accurate output, packing mixed items onto shared sheets with crop marks. It also remembers named print profiles, including printer, paper, tray, media type, quality and calibration settings.
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to send a finished one-page daily newspaper brief to a private endpoint, where it is rendered for the user's printer and printed when they are nearby. It accepts editions through MCP, webhook, or email while keeping calendar and mail data on the agent side.
    1
    MIT