com.writavo/cms
NPM · @WRITAVO/MCP-SERVER · SCANNED AUG 15
Draft, edit, organise, schedule and publish a Writavo Site content from any AI assistant.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 7 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5600 tokens (~136/item across 41 items; 38 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 85% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @writavo/mcp-server
claude mcp add com-writavo-cms -- npx -y @writavo/mcp-server
codex mcp add com-writavo-cms -- npx -y @writavo/mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-writavo-cms": {
"type": "local",
"command": [
"npx",
"-y",
"@writavo/mcp-server"
],
"enabled": true
}
}
} openclaw mcp add com-writavo-cms --command npx --arg -y --arg @writavo/mcp-server
mcp_servers:
com-writavo-cms:
command: "npx"
args: ["-y", "@writavo/mcp-server"] {
"mcpServers": {
"com-writavo-cms": {
"command": "npx",
"args": [
"-y",
"@writavo/mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 15 Aug 26 +4
- Stability: unverified → 0.23 ▲ functional
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 8 Aug 26 +31
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 85 functional
- First check of Schema quality: excellent functional
- 7 Aug 26 39
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 15 Aug 2026 · Analysed npm/@writavo/mcp-server@0.1.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
cancel_article_schedule Cancel a scheduled publish ~96
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
create_article Create an article ~326
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author_id | string|null | – | A UUID. Send null to clear it. |
| category_id | string|null | – | A UUID. Send null to clear it. |
| comparison | – | – | Send null to clear it. |
| content | string|null | – | Markdown. Send null to clear it. |
| excerpt | string|null | – | Send null to clear it. |
| faqs | – | – | Send null to clear it. |
| featured_image_url | string|null | – | Send null to clear it. |
| format_id | string|null | – | A UUID. Send null to clear it. |
| howto_steps | – | – | Send null to clear it. |
| key_takeaways | – | – | Send null to clear it. |
| seo_description | string|null | – | Send null to clear it. |
| seo_keywords | – | – | Send null to clear it. |
| seo_title | string|null | – | Send null to clear it. |
| slug | string|null | – | Derived from `title` when omitted. Supply it if the URL matters. Send null to clear it. |
| tag_ids | array | – | – |
| title | string|null | – | Send null to clear it. |
No output schema declared.
No examples provided.
create_author Create an author ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| avatar_url | string|null | – | Send null to clear it. |
| bio | string|null | – | Send null to clear it. |
| is_ai_generated | boolean | – | – |
| is_default | boolean | – | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
create_category Create a category ~101
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| slug | string | – | Derived from `name` when omitted. |
No output schema declared.
No examples provided.
create_tag Create a tag ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| slug | string | – | Derived from `name` when omitted. |
No output schema declared.
No examples provided.
delete_article Delete an article ~184
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
No output schema declared.
No examples provided.
delete_author Delete an author ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
delete_category Delete a category ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
delete_media Delete a media asset ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
delete_tag Delete a tag ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_api_docs Read the API reference ~123
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.
| Name | Type | Req | Description |
|---|---|---|---|
| section | string | – | Which part to read. Defaults to "overview". Use "all" for the whole reference. |
No output schema declared.
No examples provided.
get_article Read one article ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Comma separated field allow list. Omit to receive every readable field. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_author Read one author ~38
Read one author. Read only. Nothing is changed. Needs a key carrying the authors:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_category Read one category ~38
Read one category. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_content_types List content types ~79
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_media Read one media asset ~44
Read one media asset. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the media:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_pipeline_queue Read the content queue ~181
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
| source | string | – | – |
| status | string | – | – |
No output schema declared.
No examples provided.
get_pipeline_status Read one pipeline run ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_site_info Read Site information ~72
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_tag Read one tag ~38
Read one tag. Read only. Nothing is changed. Needs a key carrying the taxonomy:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
get_usage Read plan limits, usage and balances ~90
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_articles List articles ~362
List articles. Cursor paginated, newest updated first. Read only. Nothing is changed. Needs a key carrying the articles:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| author_id | string | – | A UUID. |
| category_id | string | – | A UUID. |
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| fields | string | – | Comma separated field allow list. Any field of the Article schema may be named. Omit for the default projection, which is: `id, status, title, slug, excerpt, featured_image_url, category_id, author_i… |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
| order | string | – | – |
| slug | string | – | Exact slug match. Slugs are unique within a Site, so this returns at most one article. |
| status | array | – | Filter by status. Repeat the parameter to match several. A publishable key may only ask for `published`, and any other value is rejected with `403 INSUFFICIENT_SCOPE`. |
| tag_id | string | – | Return only articles carrying this tag. A UUID. |
| updated_since | string | – | Return only articles updated at or after this instant. This is the incremental sync parameter: store the greatest `updated_at` you have seen and pass it back next time. ISO 8601 with an offset, for e… |
No output schema declared.
No examples provided.
list_authors List authors ~150
List authors. The byline roster for the Site. Read only. Nothing is changed. Needs a key carrying the authors:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| fields | string | – | Comma separated field allow list. Default projection: `id, name, bio, avatar_url, is_ai_generated, is_default, created_at`. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
No output schema declared.
No examples provided.
list_categories List categories ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| fields | string | – | Comma separated field allow list. Default projection: `id, name, slug, article_count`. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
No output schema declared.
No examples provided.
list_media List media assets ~167
List media assets. The media library, newest first. Read only. Nothing is changed. Needs a secret key (wv_sk_) carrying the media:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | string | – | – |
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| fields | string | – | Comma separated field allow list. Default projection: `id, bucket, url, file_name, mime_type, size_bytes, width, height, alt_text, created_at`. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
No output schema declared.
No examples provided.
list_pipeline_runs List pipeline runs ~158
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
| stage | string | – | – |
| status | string | – | – |
No output schema declared.
No examples provided.
list_tags List tags ~151
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | The opaque cursor from `data.next_cursor` on the previous page. Do not parse it or construct one; its encoding is not part of this contract and will change. |
| fields | string | – | Comma separated field allow list. Default projection: `id, name, slug, article_count`. |
| limit | integer | – | Page size. Values above the maximum are clamped rather than rejected, so a client asking for a thousand rows gets a hundred and a `next_cursor`. |
No output schema declared.
No examples provided.
publish_article Publish an article ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
schedule_article Schedule an article ~219
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| id | string | yes | A UUID. |
| scheduled_publish_at | string | yes | ISO 8601. Include an offset. If you omit one it is read in the Site's timezone, which you can get from `GET /site`. ISO 8601 with an offset, for example 2026-09-01T09:00:00Z. |
No output schema declared.
No examples provided.
trigger_pipeline_run Request a pipeline run ~167
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true only after the user has explicitly agreed to this action. Calling without it returns a description of what would happen and changes nothing. |
| max_articles | integer | – | An upper bound on how many articles this run may produce. Your own safety valve on top of the platform spend cap. Omit to use the Site's configured batch size. |
No output schema declared.
No examples provided.
unpublish_article Unpublish an article ~87
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
No output schema declared.
No examples provided.
update_article Update an article ~377
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author_id | string|null | – | A UUID. Send null to clear it. |
| category_id | string|null | – | A UUID. Send null to clear it. |
| comparison | – | – | Send null to clear it. |
| content | string|null | – | Markdown. Send null to clear it. |
| excerpt | string|null | – | Send null to clear it. |
| faqs | – | – | Send null to clear it. |
| featured_image_url | string|null | – | Send null to clear it. |
| format_id | string|null | – | A UUID. Send null to clear it. |
| howto_steps | – | – | Send null to clear it. |
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
| key_takeaways | – | – | Send null to clear it. |
| seo_description | string|null | – | Send null to clear it. |
| seo_keywords | – | – | Send null to clear it. |
| seo_title | string|null | – | Send null to clear it. |
| slug | string|null | – | Changing the slug of a published article changes its live URL and nothing is redirected for you. The old URL starts returning 404. Send null to clear it. |
| tag_ids | array | – | Full replacement, not a merge. Send `[]` to clear. |
| title | string|null | – | Send null to clear it. |
No output schema declared.
No examples provided.
update_author Update an author ~191
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.
| Name | Type | Req | Description |
|---|---|---|---|
| avatar_url | string|null | – | Send null to clear it. |
| bio | string|null | – | Send null to clear it. |
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
| is_ai_generated | boolean | – | – |
| is_default | boolean | – | – |
| name | string | – | – |
No output schema declared.
No examples provided.
update_category Update a category ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
| name | string | – | – |
| slug | string | – | – |
No output schema declared.
No examples provided.
update_media Update a media asset ~143
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.
| Name | Type | Req | Description |
|---|---|---|---|
| alt_text | string|null | – | Send null to clear it. |
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
No output schema declared.
No examples provided.
update_tag Update a tag ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A UUID. |
| if_match | string | – | The ETag from your last read of this object. Send it and the write is refused if somebody else changed the object in the meantime, rather than silently overwriting their work. |
| name | string | – | – |
| slug | string | – | – |
No output schema declared.
No examples provided.
upload_media Upload an image ~276
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.
| Name | Type | Req | Description |
|---|---|---|---|
| alt_text | string | – | Accessibility text. Worth sending. It is what screen readers announce and what search engines read, and there is no way to generate it for you. |
| bucket | string | – | Which library the asset belongs to. Defaults to blog-images. |
| content_type | string | – | The image type. Guessed from the filename when omitted. It is a hint either way: the API reads the real type from the bytes and refuses anything that is not an allowed image. |
| file_name | string | – | The filename to store it under. Taken from the path or URL when omitted. |
| file_path | string | – | Absolute path to an image on this machine. Give either this or source_url. |
| source_url | string | – | Public https URL to fetch the image from. Give either this or file_path. |
No output schema declared.
No examples provided.
verify_api_key Verify a key ~69
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.