Skip to main content
Glama

Update a page

update_page

Modify wiki page content or metadata with full-body replacement or precise text edits. It prevents accidental overwrites by detecting concurrent changes and rejects ambiguous matches.

Instructions

Changes a page. Pass content to replace the whole body, or edits for surgical find-and-replace — each edit’s old_text must appear exactly once, and an ambiguous or missing match is refused rather than applied to the wrong place. Before writing, this checks whether somebody else changed the page since it was read and refuses to clobber them; pass force=true to overwrite deliberately. Metadata fields can be changed on their own, without touching the text.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoPage path without a leading slash and without the locale prefix, e.g. "docs/setup". A browser URL looks like /en/docs/setup — drop the "en/", it is the locale argument. (Not enforced: "ci/", "db/" and "qa/" are perfectly good first segments that happen to look like locale codes.)
tagsNoReplaces the whole tag list, it is not merged.
editsNoFind-and-replace edits. Mutually exclusive with content.
forceNoWrite even though the page changed since you read it. Overwrites the other person’s edit.
titleNoPage title as shown in the wiki.
editorNoStorage format. "markdown" for markdown source, "ckeditor" for rich-text HTML, "code" for raw HTML, "asciidoc" for AsciiDoc.
localeNoLocale code. Defaults to WIKIJS_LOCALE. The locale is part of a page’s identity.
contentNoReplacement body. Mutually exclusive with edits.
page_idNoNumeric Wiki.js id.
is_privateNo
descriptionNoShort page description, shown in listings and search results.
is_publishedNo
expected_updated_atNoThe updatedAt value you saw when you read this page. Normally unnecessary — a previous get_page in this session is remembered automatically — but it makes the concurrent-edit check work without one.
Behavior5/5

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

The description discloses several non-obvious behaviors beyond the idempotentHint annotation: ambiguous or missing old_text matches are refused, concurrent edits are detected and refused unless force=true, and metadata-only updates are allowed. This richly informs the agent about side effects and failure modes.

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

Conciseness5/5

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

The description is front-loaded with the core action and uses three dense, purposeful sentences. Every clause contributes behavioral or usage guidance, with no redundant padding or repetition of schema details.

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?

For a 13-parameter mutation tool, the description covers the most decision-critical aspects: content vs edits, edit uniqueness, concurrency protection, force override, and metadata-only updates. The remaining details are adequately handled by the rich input schema and the expected_updated_at notes about get_page.

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 coverage is high (85%), so the schema already explains most parameters. The description adds meaningful conceptual grouping—content replaces the whole body, edits are surgical and require unique old_text, and metadata can be changed independently—which helps an agent understand parameter relationships beyond the raw field descriptions.

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?

The description opens with 'Changes a page' and then specifies the two primary update modes: replacing the whole body via content and performing surgical find-and-replace via edits. It also clarifies that metadata fields can be updated without touching the text, making the tool's scope distinct from create_page, move_page, and delete_page.

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

Usage Guidelines3/5

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

The description gives clear context on when to use content vs edits and explains the concurrency/force behavior. However, it does not explicitly name sibling alternatives or state exclusions, such as when to prefer convert_page_editor for changing editor format or create_page for a new page.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/wikijs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server