Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

skill_update

Update an ad-ops playbook (Skill), guarded by base_revision so concurrent edits aren't clobbered.

Updates an existing Skill. Requires the skill:write scope. Always fetch the Skill with skill_get first so you have its current revision, then pass it back as base_revision — the update is rejected if the Skill changed since you read it.

Input

Field Type Required Description
skill_name string yes The current slug identifying which Skill to update.
base_revision number yes The revision you last read via skill_get. Guards against overwriting a race.
name string no New display name.
description string no New discovery description.
body string no New playbook instructions.
slug string no Optional new slug (a deliberate rename); normalized to kebab-case.

Only the fields you pass change; the rest carry forward. On success the revision is bumped.

Output

The updated Skill, including its new revision.

Example

“Add a rule to the weekly-meta-audit skill: always end with a one-line summary.”

const skill = skill_get({ skill_name: 'weekly-meta-audit' }); // revision 3
skill_update({
  skill_name: 'weekly-meta-audit',
  base_revision: skill.revision,
  body: `${skill.body}\n\n## Rules\n- End with a one-line summary.`,
});
// → { slug: 'weekly-meta-audit', revision: 4, … }

Errors

  • Stale revision — the Skill changed since you read it. Re-fetch with skill_get and retry with the latest base_revision.
  • Slug conflict — a rename collided with another live Skill’s slug.
  • Invalid slug — the new slug has no letters or digits.
  • Not found — no Skill with that slug exists.
  • 401 or 403 — see Errors, which every tool shares. This one needs skill:write.

Reference

Update an ad-ops playbook (Skill). Pass base_revision (from skill_get) — the update is rejected if the Skill changed since you read it. Only the fields you pass are changed. Optionally rename the slug handle.

Input

Argument Type Required Description
base_revision integer yes The revision you last read via skill_get. Guards against overwriting a concurrent edit.
body string no New playbook instructions.
description string no New discovery description.
name string no New display name.
skill_name string yes The current Skill slug identifying which Skill to update.
slug string no Optional new slug handle (a deliberate rename); normalized to kebab-case. Callers of the old handle must be updated.

Failure codes

A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.

  • not_found
  • invalid_slug
  • revision_mismatch
  • slug_conflict
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold skill:write. Auth & scopes lists each scope.

Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

  • Writes. The tool can change data.
  • Destructive. The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
  • Not idempotent. A second call with the same arguments can change more.
  • Closed world. The tool reads and writes the data of AdCrunch only.

Was this page helpful?