{
  "markdown": "# @writavo/mcp-server\n\nYour Writavo Site's content, inside an AI assistant. Draft a post, set its category and byline,\nattach an image, schedule it, publish it, all from a conversation.\n\nIt speaks the Model Context Protocol over stdio, so it runs as a subprocess of your client rather\nthan as a service you host.\n\n## Install\n\n```json\n{\n  \"mcpServers\": {\n    \"writavo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@writavo/mcp-server\"],\n      \"env\": { \"WRITAVO_API_KEY\": \"wv_sk_your_key_here\" }\n    }\n  }\n}\n```\n\nCreate the key at <https://app.writavo.com/settings/api-keys> and give it only the scopes you want\nthe assistant to have. A key never outranks the person who made it: narrowing your own permissions\nnarrows every key you created, on the next request.\n\nWithout a key the server still starts and `get_api_docs` still works, so you can read the whole\nAPI reference before signing up.\n\n## What it can do\n\nThirty six tools are compiled from Writavo's published OpenAPI specification, plus two written by\nhand:\n\n- **Articles.** List, read, create, update, delete, publish, unpublish, schedule, cancel a schedule.\n- **Taxonomy and people.** Categories, tags and authors: list, read, create, update, delete.\n- **Media.** List, read, update, delete, and `upload_media`, which drives the whole three step\n  presigned upload in one call so the assistant does not have to orchestrate it.\n- **Pipeline.** Trigger a run, read its status, read the queue.\n- **Meta.** Site information, content types, plan usage and balances, and `get_api_docs`, which\n  needs no key at all.\n\n## What it will not do without asking\n\n`publish_article`, `schedule_article`, every `delete_*` and `trigger_pipeline_run` do nothing on\nthe first call. They describe what would happen and wait for `confirm: true`, which the assistant\ncan only set after you have agreed. Publishing puts content on your live site, deleting is\npermanent, and a pipeline run spends real credits.\n\nTwo things are not reachable from an assistant at all, whatever scopes the key carries:\n\n- **API keys.** A server that can mint a secret key is a server whose compromise mints secret keys,\n  and the key it would use to do so is in a config file on the same machine.\n- **Webhooks.** An assistant that can repoint delivery URLs can quietly redirect your event stream.\n\nBoth stay in the dashboard.\n\n## What it never writes down\n\n- Your key is sent to `https://api.writavo.com/v1` as a bearer header and to nothing else. No\n  telemetry, no analytics, no third-party host. The base URL is read from the specification and\n  cannot be repointed off `api.writavo.com` by an environment variable.\n- Every reply, log line and error is passed through a redactor, so a key cannot reach your\n  transcript even if the API echoed it back inside an error message.\n- Standard output carries protocol messages and nothing else. Every console channel is rebound to\n  standard error before the server starts, because one stray line on stdout is a dropped\n  connection.\n\n## Errors you might see\n\nEach one is answered with what to change rather than a status code.\n\n| Code | What it means | What to do |\n|---|---|---|\n| `INSUFFICIENT_SCOPE` | The key lacks the scope, or its creator's permissions no longer cover it | Add the scope at <https://app.writavo.com/settings/api-keys> |\n| `NOT_ENTITLED` | Your plan does not include the capability | Upgrade at <https://app.writavo.com/billing> |\n| `INSUFFICIENT_CREDITS` | The organisation cannot afford the next unit of work | Top up at <https://app.writavo.com/billing> |\n| `SPEND_CAP_REACHED` | This Site hit the monthly ceiling you set for it | Raise the cap or wait for the reset |\n| `NOT_FOUND` | No such object, or it belongs to a different Site | Check you are using the key for the right Site |\n\nThe full catalog is in `get_api_docs` under `errors`, and at <https://writavo.com/docs/errors>.\n\n## Prompts\n\n- **draft-article.** Research a topic and write a draft in your Site's own voice. It never\n  publishes or schedules.\n- **publish-checklist.** Walk an existing draft through title, slug, SEO fields, excerpt, category,\n  author and featured image, then ask before publishing.\n\n## Development\n\nThis package lives in the Writavo monorepo. Its tool schemas, descriptions and reference text are\ngenerated, not written:\n\n```\nnpm run gen         regenerate from the vendored openapi.yaml\nnpm test            run the 44 offline smoke checks\nnpm run gen:check   fails if the committed tool surface is stale\n```\n\nAdding an endpoint to `openapi.yaml` and regenerating is the whole of adding a tool. Editing\nanything under `src/generated/` fails CI.\n\n## Licence\n\n**MIT** ([LICENSE](LICENSE)). Fork it, modify it, vendor it, ship it inside something else.\n\nThe MIT grant covers **this client package only**. It is not a licence to the Writavo Content API\nthat the package calls, or to any other part of Writavo. Using the API still requires your own\ncredentials and is governed by the terms at <https://writavo.com/terms>, and `openapi.yaml` (the\nspecification this package is compiled from) remains the proprietary contract it always was.\n\nThat split is deliberate. This package is a thin, generated client: there is nothing in it worth\nrestricting, and an MIT client is easier to trust, audit, package and list in a registry. The\nproduct is the API behind it.\n",
  "bytes": 5336,
  "sha": "11ceb3b5622786eb8c34f5453d45e6a5f19082260892fe50bb8452313e0033a8",
  "repo_slug": "sparkleofficial/writavo-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_writavo_cms_e8ceffbc/readme"
}