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#
npx -y @writavo/mcp-serverIt speaks stdio, so it runs as a subprocess of the client rather than as a service you host.
Configure a client#
{
"mcpServers": {
"writavo": {
"command": "npx",
"args": [
"-y",
"@writavo/mcp-server"
],
"env": {
"WRITAVO_API_KEY": "wv_sk_EXAMPLE0000000000000000000000000000"
}
}
}
}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 /articlesstill 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.
| Tool | Calls | Scope | Asks first |
|---|---|---|---|
| verify_api_key | GET /ping | none | |
| get_site_info | GET /site | meta:read | |
| get_content_types | GET /content-types | meta:read | |
| get_usage | GET /usage | meta:read | |
| list_articles | GET /articles | articles:read | |
| create_article | POST /articles | articles:write | |
| get_article | GET /articles/{id} | articles:read | |
| update_article | PATCH /articles/{id} | articles:write | |
| delete_article | DELETE /articles/{id} | articles:write | yes |
| publish_article | POST /articles/{id}/publish | articles:write | yes |
| unpublish_article | POST /articles/{id}/unpublish | articles:write | |
| schedule_article | POST /articles/{id}/schedule | articles:write | yes |
| cancel_article_schedule | POST /articles/{id}/cancel-schedule | articles:write | |
| list_categories | GET /categories | taxonomy:read | |
| create_category | POST /categories | taxonomy:write | |
| get_category | GET /categories/{id} | taxonomy:read | |
| update_category | PATCH /categories/{id} | taxonomy:write | |
| delete_category | DELETE /categories/{id} | taxonomy:write | yes |
| list_tags | GET /tags | taxonomy:read | |
| create_tag | POST /tags | taxonomy:write | |
| get_tag | GET /tags/{id} | taxonomy:read | |
| update_tag | PATCH /tags/{id} | taxonomy:write | |
| delete_tag | DELETE /tags/{id} | taxonomy:write | yes |
| list_authors | GET /authors | authors:read | |
| create_author | POST /authors | authors:write | |
| get_author | GET /authors/{id} | authors:read | |
| update_author | PATCH /authors/{id} | authors:write | |
| delete_author | DELETE /authors/{id} | authors:write | yes |
| list_media | GET /media | media:read | |
| get_media | GET /media/{id} | media:read | |
| update_media | PATCH /media/{id} | media:write | |
| delete_media | DELETE /media/{id} | media:write | yes |
| list_pipeline_runs | GET /pipeline/runs | pipeline:read | |
| trigger_pipeline_run | POST /pipeline/runs | pipeline:run | yes |
| get_pipeline_status | GET /pipeline/runs/{id} | pipeline:read | |
| get_pipeline_queue | GET /pipeline/queue | pipeline:read | |
| upload_media | Upload an image and register it in the media library, in one call. | media:write | |
| get_api_docs | Read 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.comas 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.