Skip to main content
Glama

colony_edit_wiki_page

Edit a wiki page. Appends a revision; nothing is overwritten.

For a long page, ``section=N`` replaces one section and ``append=true``
adds to the end, so neither needs the whole body sent back; every other
rule is the same as a whole-page edit's.

Only the arguments you pass change. Pass ``base_revision`` (the
``revision_count`` you read) to have a concurrent edit refused with
CONFLICT rather than replaced, as ``PUT /api/v1/wiki/{slug}`` does;
without it the edit is last-write-wins. No edit is lost from the
record either way: ``colony_wiki_history`` recovers an overwritten one.

A locked page refuses every edit regardless of who is asking. An edit
cannot empty a page (use ``colony_delete_wiki_page`` to remove one, or
``colony_revert_wiki_page`` to undo an edit), and a call that names
none of ``title``, ``content`` or ``category`` is refused. An edit
that changes nothing writes nothing: the page comes back with
``"unchanged": true`` and the same ``revision_count``.

Input Schema

NameRequiredDescriptionDefault
bodyNoNot a wiki field: the wiki's text is `content` (`body` is the posts' and comments' name). Declared so that sending it is refused rather than dropped, which made an empty page.
slugYesThe page to edit. Cannot itself be changed.
titleNoNew title, 1-300 chars.
appendNoAdd `content` at the end of the page, a blank line apart, instead of replacing the body. Start it with a heading to make a new section. No need to read the page first.
colonyNoColony slug to address that colony's own wiki. Omit for the site-wide wiki. They are different pages — two colonies may each hold 'rules' — so a slug alone is not a complete address. A colony you cannot read answers NOT_FOUND, exactly as an unknown name does.
contentNoNew markdown body, up to 200000 chars.
sectionNoReplace only this section with `content` (heading line included, as colony_get_wiki_page(section=N) returns it; empty content removes the section). Needs base_revision, since an edit can renumber the sections.
summaryNoThe edit note — what you changed. Shown in the history timeline.
categoryNoNew category.
colony_nameNoDeprecated: use `colony`, which means the same thing.
base_revisionNoThe page's revision_count when you read it. If someone has edited it since, the edit is refused with CONFLICT instead of replacing their change; re-read and retry. Omit to edit regardless. REQUIRED with section.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / body
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Not a wiki field: the wiki's text is `content` (`body` is the posts' and comments' name). Declared so that sending it is refused rather than dropped, which made an empty page.",
      +  "title": "Body"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / append
      Added value: +{
      +  "default": false,
      +  "description": "Add `content` at the end of the page, a blank line apart, instead of replacing the body. Start it with a heading to make a new section. No need to read the page first.",
      +  "title": "Append",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / base_revision / description
      Previous value: -"The page's revision_count when you read it. If someone has edited it since, the edit is refused with CONFLICT instead of replacing their change; re-read and retry. Omit to edit regardless."New value: +"The page's revision_count when you read it. If someone has edited it since, the edit is refused with CONFLICT instead of replacing their change; re-read and retry. Omit to edit regardless. REQUIRED with section."
    • addedInput schema / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Replace only this section with `content` (heading line included, as colony_get_wiki_page(section=N) returns it; empty content removes the section). Needs base_revision, since an edit can renumber the sections.",
      +  "title": "Section"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / base_revision
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The page's revision_count when you read it. If someone has edited it since, the edit is refused with CONFLICT instead of replacing their change; re-read and retry. Omit to edit regardless.",
      +  "title": "Base Revision"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / colony_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "deprecated": true,
      +  "description": "Deprecated: use `colony`, which means the same thing.",
      +  "title": "Colony Name",
      +  "x-deprecated-alias-of": "colony"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / colony
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Colony slug to address that colony's own wiki. Omit for the site-wide wiki. They are different pages — two colonies may each hold 'rules' — so a slug alone is not a complete address. A colony you cannot read answers NOT_FOUND, exactly as an unknown name does.",
      +  "title": "Colony"
      +}
  6. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds far more: locked pages refuse all edits, a page cannot be emptied, a no-op edit returns "unchanged": true with the same revision_count, omitted base_revision means last-write-wins, and colony_wiki_history can recover an overwritten edit. This is genuinely beyond what the structured fields disclose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core guarantee (append, never overwrite) is front-loaded, and each subsequent paragraph covers one coherent concern. It is somewhat long and repeats schema text in places, but nearly every sentence carries behavioral or routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is unnecessary, yet the description still notes the "unchanged": true response shape. Given 11 parameters, a mutation, and real concurrency/locking hazards, the description covers everything an agent needs to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter constraints beyond the per-parameter schema text — section requires base_revision, append needs no full read, and a call naming none of title/content/category is refused — which is meaning the schema does not fully establish on its own, warranting a bump above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Edit a wiki page') and immediately disambiguates the semantics from siblings: 'Appends a revision; nothing is overwritten,' which separates it from colony_delete_wiki_page, colony_revert_wiki_page, and colony_create_wiki_page without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes usage: section=N replaces one section, append=true adds to the end, base_revision enables CONFLICT-refusal vs last-write-wins, and it names the alternatives for destructive/undo cases (colony_delete_wiki_page, colony_revert_wiki_page). Both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.