Skip to main content
Glama
SparkleOfficial

@writavo/mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WRITAVO_API_KEYNoYour Writavo API key. Create at https://app.writavo.com/settings/api-keys. Without a key the server still starts, but only get_api_docs works.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
verify_api_keyA

Verify a key. The cheapest possible authenticated call. Returns the kind of key you presented and the scopes it carries. Use it to confirm credentials during setup, and as a liveness probe. It touches no content, so it is exempt from the write rate limit. Read only. Nothing is changed.

get_site_infoA

Read Site information. Public facing information about the Site your key belongs to: its display name, the domain its blog is served from, its locale and its timezone. Scheduling times are interpreted against this timezone when no offset is supplied. Read only. Nothing is changed. Needs a key carrying the meta:read scope.

get_content_typesA

List content types. The article formats available to this Site. A format is an SEO blueprint (How-To, Listicle, Versus and so on) that shapes how the generator structures an article, and that you may set on any article via format_id. Read only. Nothing is changed. Needs a key carrying the meta:read scope.

get_usageA

Read plan limits, usage and balances. What your plan allows, what you have used in the current period, and what you can still spend. Read this before a pipeline run if you want to fail fast rather than handle a 402, and read it after a run to see the balance move. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the meta:read scope.

list_articlesA

List articles. Cursor paginated, newest updated first. Read only. Nothing is changed. Needs a key carrying the articles:read scope.

create_articleA

Create an article. Creates an article at status: draft. Always. There is no request field that can make it public, and supplying status is a validation error rather than a silent ignore, so a client written against a different CMS fails loudly instead of quietly leaving content unpublished. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the articles:write scope.

get_articleA

Read one article. Returns the full article including content. A publishable key may only read an article at status: published; anything else returns 404, for the same no disclosure reason that governs cross Site access. Read only. Nothing is changed. Needs a key carrying the articles:read scope.

update_articleA

Update an article. A partial update. Only the fields you send are touched. Send null to clear a nullable field; omit it to leave it alone. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the articles:write scope.

delete_articleA

Delete an article. Permanent. The row and its tag assignments are removed, and if the article was published its URL starts returning 404 on your blog once the cache is purged. PERMANENT: this deletes content from the customer's Site. There is no trash and no undo. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the articles:write scope.

publish_articleA

Publish an article. Makes the article public immediately, at status: published. PUBLIC: this makes the article publicly visible on the customer's own live site, where search engines and readers will see it. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the articles:write scope.

unpublish_articleA

Unpublish an article. Takes the article off the web and returns it to status: draft. The URL starts returning 404 on your blog once the cache is purged. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the articles:write scope.

schedule_articleA

Schedule an article. Moves the article to status: scheduled and records when it should go live. A cron publishes it within a few minutes of that time, whether or not the AI pipeline is switched on for your Site. PUBLIC: this makes the article publicly visible on the customer's own live site, where search engines and readers will see it. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the articles:write scope.

cancel_article_scheduleA

Cancel a scheduled publish. Returns the article to status: draft and clears scheduled_publish_at. The content is untouched. Calling this on an article that is not scheduled is a no-op that returns the current state. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the articles:write scope.

list_categoriesA

List categories. Every category on the Site, alphabetically. Categories are a closed taxonomy: an article has exactly one, or none. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.

create_categoryA

Create a category. slug is unique within the Site. A collision returns 409 SLUG_CONFLICT rather than silently appending a suffix, so your URLs are never a surprise. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

get_categoryA

Read one category. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.

update_categoryA

Update a category. Renaming is safe. Changing slug changes the category archive URL on your blog, and nothing is redirected for you, so change it only if you accept the broken link. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

delete_categoryA

Delete a category. Articles in this category are not deleted. Their category_id becomes null, so they stay published and simply lose their category. Removing a category never removes content. PERMANENT: this deletes content from the customer's Site. There is no trash and no undo. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

list_tagsA

List tags. Every tag on the Site, alphabetically. Tags are cross cutting: an article may carry many. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.

create_tagA

Create a tag. slug is unique within the Site. A collision returns 409 SLUG_CONFLICT. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

get_tagA

Read one tag. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.

update_tagA

Update a tag. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

delete_tagA

Delete a tag. The tag is removed from every article that carried it. No article is deleted. PERMANENT: this deletes content from the customer's Site. There is no trash and no undo. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the taxonomy:write scope.

list_authorsA

List authors. The byline roster for the Site. Read only. Nothing is changed. Needs a key carrying the authors:read scope.

create_authorA

Create an author. is_ai_generated marks a persona rather than a real person. It defaults to true because that is what the generation pipeline creates. Set it to false for a human byline, and be accurate about it: it is what your disclosure copy keys off. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the authors:write scope.

get_authorA

Read one author. Read only. Nothing is changed. Needs a key carrying the authors:read scope.

update_authorA

Update an author. Setting is_default: true clears the flag on whichever author held it, because a Site has at most one default byline. Setting it to false on the current default leaves the Site with none. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the authors:write scope.

delete_authorA

Delete an author. Articles by this author are not deleted. Their author_id becomes null, so they stay published and lose their byline. PERMANENT: this deletes content from the customer's Site. There is no trash and no undo. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the authors:write scope.

list_mediaA

List media assets. The media library, newest first. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the media:read scope.

get_mediaA

Read one media asset. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the media:read scope.

update_mediaA

Update a media asset. Only alt_text is editable. The bytes are immutable: to replace an image, upload a new one and repoint whatever referenced the old one. Changes content on the customer's Site. Nothing becomes public: publishing is always a separate call. Needs a secret key (wv_sk_) carrying the media:write scope.

delete_mediaA

Delete a media asset. Removes the catalog row and the stored bytes. PERMANENT: this deletes content from the customer's Site. There is no trash and no undo. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the media:write scope.

list_pipeline_runsA

List pipeline runs. Recent engine activity for the Site, newest first. One row per stage invocation, so a single logical run appears as several rows as work moves through the stages. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the pipeline:read scope.

trigger_pipeline_runA

Request a pipeline run. This is the only billable operation in this API. COSTS MONEY: this spends the organisation's credit balance. It is the only billable tool here, and it is charged per unit of work the engine completes. Ask the user before calling this, and pass confirm: true only once they have agreed. Needs a secret key (wv_sk_) carrying the pipeline:run scope.

get_pipeline_statusA

Read one pipeline run. The outcome of a run. status: partial with an error_summary is what you see when a run stopped early, whether because credits ran out, the spend cap was reached, or a vendor call failed. items_succeeded tells you what you did get. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the pipeline:read scope.

get_pipeline_queueA

Read the content queue. What the engine plans to write, highest priority first. Each item is a topic or keyword with a source: manual if a person added it, content_gap if gap analysis found it, competitor_seed if it came from a competitor page. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the pipeline:read scope.

upload_mediaA

Upload an image to the Site's media library and return the asset with a usable url, which you can then set as an article's featured_image_url. Give it either a local file path or a public source_url. It drives the whole three step upload for you: reserve, transfer the bytes, register the asset. Changes content on the customer's Site. Nothing becomes public: an asset is only visible where you attach it. Needs a secret key (wv_sk_) carrying the media:write scope.

get_api_docsA

Read the Writavo Content API reference: what the API does, how keys and scopes work, every endpoint, every error code and what to do about each one. Generated from the published OpenAPI specification, so it is exactly what the API implements. No API key required. Sections: overview, authentication, errors, meta, articles, categories, tags, authors, media, pipeline, api-keys, webhooks, tools, all.

Prompts

Interactive templates invoked by user choice

NameDescription
draft-articleResearch a topic and write a draft in the Site's own voice, saved as a draft. It is never published or scheduled by this prompt.
publish-checklistCheck an existing draft's title, slug, SEO fields, excerpt, category, author and featured image, apply the fixes, then ask before publishing.

Resources

Contextual data attached and managed by the client

NameDescription
Writavo Content API referenceEvery endpoint, scope and rule, compiled from the published OpenAPI specification.
Writavo API error codesEvery error code, its HTTP status, what it means and what to change.
Content types for the connected SiteThe article formats available on the Site this key belongs to. A format is an SEO blueprint that shapes how an article is structured.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SparkleOfficial/writavo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server