Documentation menu

mcp

Your content, in an AI assistant

The Model Context Protocol server exposes this API as tools, so an assistant can read and write your content directly.

Install#

shell
npx -y @writavo/mcp-server

It speaks stdio, so it runs as a subprocess of the client rather than as a service you host.

Configure a client#

mcp client config
{
  "mcpServers": {
    "writavo": {
      "command": "npx",
      "args": [
        "-y",
        "@writavo/mcp-server"
      ],
      "env": {
        "WRITAVO_API_KEY": "wv_sk_EXAMPLE0000000000000000000000000000"
      }
    }
  }
}
The key in this file is a secret key with real write authority. Scope it to what the assistant actually needs, and prefer a key created for the assistant alone so you can revoke it without affecting anything else.

What it can do#

The tools are generated from the same openapi.yaml this reference is, so the assistant sees exactly the operations documented here, with the same scopes and the same gates. Nothing is available to an assistant that is not available to your own code.

  • The Site is resolved from the key, so an assistant cannot reach a Site you did not give it a key for.
  • POST /articles still only creates drafts. An assistant cannot publish anything without an explicit publish call.
  • Pipeline runs still cost credits and still respect your spend cap.
  • Anything that publishes, deletes or spends asks you first, and does nothing until you say yes.
ToolCallsScopeAsks first
verify_api_keyGET /pingnone
get_site_infoGET /sitemeta:read
get_content_typesGET /content-typesmeta:read
get_usageGET /usagemeta:read
list_articlesGET /articlesarticles:read
create_articlePOST /articlesarticles:write
get_articleGET /articles/{id}articles:read
update_articlePATCH /articles/{id}articles:write
delete_articleDELETE /articles/{id}articles:writeyes
publish_articlePOST /articles/{id}/publisharticles:writeyes
unpublish_articlePOST /articles/{id}/unpublisharticles:write
schedule_articlePOST /articles/{id}/schedulearticles:writeyes
cancel_article_schedulePOST /articles/{id}/cancel-schedulearticles:write
list_categoriesGET /categoriestaxonomy:read
create_categoryPOST /categoriestaxonomy:write
get_categoryGET /categories/{id}taxonomy:read
update_categoryPATCH /categories/{id}taxonomy:write
delete_categoryDELETE /categories/{id}taxonomy:writeyes
list_tagsGET /tagstaxonomy:read
create_tagPOST /tagstaxonomy:write
get_tagGET /tags/{id}taxonomy:read
update_tagPATCH /tags/{id}taxonomy:write
delete_tagDELETE /tags/{id}taxonomy:writeyes
list_authorsGET /authorsauthors:read
create_authorPOST /authorsauthors:write
get_authorGET /authors/{id}authors:read
update_authorPATCH /authors/{id}authors:write
delete_authorDELETE /authors/{id}authors:writeyes
list_mediaGET /mediamedia:read
get_mediaGET /media/{id}media:read
update_mediaPATCH /media/{id}media:write
delete_mediaDELETE /media/{id}media:writeyes
list_pipeline_runsGET /pipeline/runspipeline:read
trigger_pipeline_runPOST /pipeline/runspipeline:runyes
get_pipeline_statusGET /pipeline/runs/{id}pipeline:read
get_pipeline_queueGET /pipeline/queuepipeline:read
upload_mediaUpload an image and register it in the media library, in one call.media:write
get_api_docsRead the API reference offline. The one tool that needs no key.none

What it deliberately cannot do#

Two parts of the API are not reachable from an assistant at all, whatever scopes the key carries.

API keys

Credential management stays in the dashboard. A server that can mint a secret key is a server whose compromise mints secret keys, and the key it would use to do so is sitting in a config file on the same machine.

Webhooks

Account configuration, not content. An assistant that can repoint delivery URLs can quietly redirect a Site's event stream, and that is a change a person should make deliberately.

What it never writes down#

  • Your key is sent to api.writavo.com as a bearer header and nowhere else. There is no telemetry and no third-party host.
  • The key is masked out of every reply, every log line and every error, including one where the API itself echoed it back.
  • The server speaks stdio, so it writes nothing to standard output except protocol messages.