AI-powered WordPress content studio: keyword research, SE Rankings tracking, AI article writing with SEO optimization, and one-click publishing to WordPress.
create_projectwriteCreate a new project โ a container for one site's context: keywords, brand voice, useful links, socials. Use for: add a new site/project, start tracking a new website.
list_projectsreadList all projects (sites) โ id, name, site url, keywords. Use for: list my projects, what sites do I have.
update_project_contextwriteUpdate a project's context โ any of: name, site url, description, keywords, useful links, social links, brand voice. Only send fields that changed. Use for: add keywords to project, update brand voice, add a useful link.
delete_projectdestructivePermanently delete a project and ALL its articles. Use for: delete this project, remove site.
open_projectwritePANEL-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_linkwriteAdd ONE internal page of THIS project's own site as a reference link the article writer may link to, with a short description of what that page is about (its topic / target keyword). The writer uses the description to weave a natural, in-sentence anchor when it links to the page โ give a real topic, never just the brand name. Good sources to collect from: the site's top pages in Google Search Console, its tracked pages in SE Ranking, or its sitemap. Use for: add an internal link for the writer, register a page for interlinking.
list_reference_linksreadList the internal reference links saved on a project (url + description) that the article writer is allowed to link to. Use for: list reference links, what internal links can the writer use.
remove_reference_linkdestructiveRemove ONE internal reference link from a project by its URL. Use for: remove a reference link, delete an internal link.
create_articlewriteCreate a new article shell under a project โ just a title/keyword placeholder, no content yet. Use for: add an article idea. Follow up with generate_article to actually write it.
list_articlesreadList articles (metadata only โ id, title, status, word count, SEO flags โ never the full text). Optionally filter by project or status. Use for: list articles, what's in review, show idea/writing/review/published articles.
update_article_statuswriteMove an article to a new status: idea, writing, review, or published. Use for: mark as review, move to writing.
update_article_metawriteFix an article's SEO metadata โ title, meta_description, and/or target_keyword โ WITHOUT touching the article body/sections. This is the only way to clear a meta_description SEO flag (e.g. 'length outside 70-165') or correct the target keyword after generation. Use for: fix the meta description, update SEO title/keyword. To rewrite actual body text, use patch_article instead.
save_article_sectionwriteDirectly overwrite one section's heading/content with EXACT text you were given โ a raw manual save, NOT an AI writing step (it skips grounding/review entirely). Use only when the user pastes/dictates exact text to store verbatim. To actually WRITE or improve an article, use generate_article or patch_article instead.
save_full_articlewritePANEL-ONLY: replace the entire article from the panel's single merged editor. The leading <h1> is the title; everything after it splits into sections at heading boundaries. Persists BOTH the title and the body in one save โ this is the one path that lets the title or a section be edited/added/removed/reordered by editing the document directly. Not for chat use โ Webbee should use generate_article or patch_article to write content.
delete_articledestructivePermanently delete an article. Use for: delete this article.
export_article_textreadGet the FULL article body โ both as HTML (`html`: <h2>/<strong>/<ul> markup) and plain text (`text`) โ so it can be handed to another extension or the user: sending it by email, saving it to a note, pasting it elsewhere. Use `html` with Mail's send()/reply() (is_html=true) or Notes' create_note content for real formatting; use `text` for a plain fallback. ONLY call this when the user explicitly asks to send/export/copy the article somewhere. Never call this for routine status checks, listing, or quality review โ use list_articles for those, which stays cheap on purpose.
generate_articlewriteStart writing an article's first draft using the project's context plus a brief and any real source facts (from web search or other extensions) it must be grounded in. Runs in the background โ it does not block. To see when it's done, call list_articles(status='review') a bit later: an article'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 article, draft this article.
patch_articlewriteRewrite ONE part of an article by natural-language instruction (e.g. 'rewrite the paragraph about delivery', 'make the intro punchier'). Locates the right section automatically, edits just that section, and recomputes word count/SEO flags โ never touches the rest of the article. Returns a short preview, not the full body. Use for: rewrite the section about X, fix the intro, tighten the conclusion.
read_full_articlereadRead the ENTIRE article body as editable Markdown (# title, ## 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 an article to another app like Mail/Notes, use export_article_text instead.) Use for: read the whole article.
edit_full_articlewriteReplace the ENTIRE article with your edited version as Markdown (# title, ## headings, body). Stores EXACTLY what you submit โ nothing is re-generated โ so first read_full_article, change only what's needed, and resend the COMPLETE text with every unchanged part preserved verbatim. For a small targeted change prefer patch_article. Use for: edit the article.
Install Article Writer and let Webbee use it across your workflow.
Open in panel