Project-based email newsletter writing: keep per-project context (brand voice, goals, reference links, reusable 'fill' items like promo codes) and have newsletters written cheaply, with mechanical...
What this app can do
27 tools registered
Create Project10 tok
Create a new newsletter project — a container for one brand's context: goals, brand voice, keywords, useful links, socials, MailerLite targeting label. Use for: add a new newsletter project.
List Projects10 tok
List all newsletter projects — id, name, keywords, goals. Use for: list my newsletter projects, what newsletter projects do I have.
Update Project Context15 tok
Update a newsletter project's context — any of: name, description, brand voice, goals, keywords, useful links, social links, MailerLite targeting label/group ids. Only send fields that changed. Use for: add keywords to newsletter project, update brand voice, set MailerLite targeting.
Delete Project10 tok
Permanently delete a newsletter project and ALL its newsletters, fill categories and fill items. Use for: delete this newsletter project, remove newsletter site.
Open ProjectFree
PANEL-ONLY: switch the currently-open project (sidebar detail + workspace board). Not for chat use — this is pure UI navigation state, nothing about the project itself changes.
Add Reference Link10 tok
Add ONE internal page of THIS project's own site as a reference link the newsletter writer may link to, with a short description of what that page is about. The writer uses the description to weave a natural, in-sentence anchor. Use for: add an internal link for the newsletter writer.
List Reference Links10 tok
List the internal reference links saved on a newsletter project. Use for: list reference links, what internal links can the newsletter writer use.
Remove Reference Link10 tok
Remove ONE internal reference link from a newsletter project by its URL. Use for: remove a reference link.
Create Fill Category15 tok
Add a named 'stock' category (e.g. promo codes, priority links, topics to cover) to a newsletter project. Capped per project — ask the user proactively which categories they want. Use for: create a fill category, add a promo-code slot.
List Fill Categories10 tok
List the fill categories (promo codes, links, topics, etc.) on a newsletter project. Use for: list fill categories.
Delete Fill Category10 tok
Permanently delete a fill category and all its items. Use for: delete this fill category.
Create Fill Item15 tok
Add one value (a promo code, a specific link, a topic) to a fill category. The generation pipeline rotates through items least-used-first. Use for: add an item to the category, add a value to fill category.
List Fill Items10 tok
List the items in a fill category, least-used-first. Use for: list fill items.
Update Fill Item15 tok
Change a fill item's value/note, or retire it (is_active=false) without deleting its usage history — e.g. an expired promo code. Use for: retire this promo code, deactivate fill item.
Delete Fill Item10 tok
Permanently delete one fill item. Use for: delete this fill item.
Create Newsletter15 tok
Create a new newsletter shell under a project — just a placeholder, no content yet. Does not call any AI. Follow up with generate_newsletter to actually write it. Use for: add a newsletter idea, start a new email draft.
List Newsletters10 tok
List newsletters (metadata only — id, subject, status, word count, quality flags — never the full body). Optionally filter by project or status. Use for: list newsletters, what's in review, show idea/writing/review/scheduled/sent newsletters.
Update Newsletter Status10 tok
Move a newsletter to a new status: idea, writing, review, scheduled, sent. Use for: move this newsletter to review/scheduled.
Update Newsletter Meta10 tok
Fix a newsletter's subject and/or preheader without touching the body. Use for: change the subject line.
Update Newsletter Section10 tok
PANEL-ONLY: directly overwrite one block's fields with EXACT values — a raw manual save, NOT an AI writing step (it skips the judge entirely). Not for chat use — Webbee should use generate_newsletter or patch_newsletter to write content.
Save Full Newsletter10 tok
PANEL-ONLY: replace the entire newsletter from the panel's single merged editor. The leading <h1> is the subject; everything after it splits into {heading, content} sections at heading boundaries (see richtext.py). Persists BOTH the subject and the body in one save — this is the one path that lets the subject or a section be edited/added/removed/reordered by editing the document directly. Not for chat use — Webbee should use generate_newsletter or patch_newsletter to write content.
Read Full Newsletter30 tok
Read the ENTIRE newsletter body as editable Markdown (# subject, ## section headings, body in light markdown). Returns the full text to chat on purpose — call this before editing so you work from the real current text, never from memory. (To hand a newsletter to another app like MailerLite/Mail/Notes, use export_newsletter_text instead — sending raw Markdown produces literal '**'/'##' characters in the recipient's inbox.) Use for: read the whole newsletter.
Export Newsletter Text100 tok
Get the FULL newsletter body — both as HTML (`html`: <h2>/<strong>/<ul> markup, no literal Markdown syntax) and plain text (`text`) — so it can be handed to another extension: MailerLite (create/update a campaign), Mail's send()/reply() (is_html=true), or Notes. ONLY call this when the user explicitly asks to send/export/copy the newsletter somewhere. Never call this for routine status checks or listing — use list_newsletters for those, which stays cheap on purpose.
Edit Full Newsletter40 tok
Replace the ENTIRE newsletter with your edited version as Markdown (# subject, ## headings, body). Stores EXACTLY what you submit — nothing is re-generated — so first read_full_newsletter, change only what's needed, and resend the COMPLETE text with every unchanged part preserved verbatim. For a small targeted change prefer patch_newsletter. Use for: edit the newsletter.
Delete Newsletter10 tok
Permanently delete a newsletter. Use for: delete this newsletter.
Generate Newsletter400 tok
Start writing a newsletter's first draft using the project's context (brand voice, goals, fill categories) plus a topic/goal brief and any real source facts (from web search or other extensions, e.g. an Article Writer article or Matomo/GSC data) the draft's claims must be grounded in. Runs in the background — it does not block. To see when it's done, call list_newsletters(status='review') a bit later: a newsletter's status lands on 'review' the moment its draft is ready, so that one call shows everything that finished — no job_id tracking needed. Use for: write the newsletter, draft this email.
Patch Newsletter30 tok
Rewrite ONE block of a newsletter by natural-language instruction (e.g. 'rewrite the block about the promo to be more urgent', 'shorten the intro'). Locates the block automatically (heading/keyword match) and returns a short preview — never the full body. Use for: shorten this newsletter's intro, make the CTA punchier.