Skip to main content
Glama

confluence_write

Overwrite an existing Confluence page's body using JFM markdown or ADF JSON. Preserve localId attributes to avoid losing inline comments, and validate changes with dry_run before applying.

Instructions

Overwrite an EXISTING Confluence page's body (identified by id) from JFM markdown (default) or raw ADF JSON. This fully replaces the body — to create a brand-new page instead, use confluence_create. DATA LOSS: inline comments (and task-item state) are anchored to the page through the localId attributes that confluence_read emits; if the body you send omits them, Confluence drops the inline comments tied to those anchors. Edit the JFM returned by confluence_read and keep its localIds intact — do not hand-author a fresh body or send content produced with local IDs stripped (atlassian_convert with strip_local_ids). JFM is GitHub-style markdown, NOT Confluence wiki markup — see resource omni-dev://specs/jfm for syntax. Provide the body as content (inline) OR content_path (a filesystem path the server reads) — not both. Prefer content_path when the body is already on disk: emitting a large body inline is slow, and pages routinely exceed that threshold; the inline form is fine for short bodies. Set dry_run: true first when uncertain about required fields or formatting — validates the input and returns the request that would be sent (method, path, body) without updating the page. Mirrors omni-dev atlassian confluence write --force (and --dry-run).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
formatNoFormat of `content`: `"jfm"` (default markdown) or `"adf"` (raw ADF JSON).
contentNoNew page body, supplied inline. Mutually exclusive with `content_path`; exactly one of the two is required. For `format = "jfm"` (the default), this is GitHub-style markdown, NOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`. Full reference: MCP resource `omni-dev://specs/jfm`. Preserve the `localId` attributes (and inline-comment anchor spans) from the original `confluence_read` output: they anchor inline comments and stateful nodes, and dropping them makes Confluence lose those comments.
dry_runNoWhen true, validate and return the would-be request (method, path, body) without updating the page. Defaults to `false`.
content_pathNoFilesystem path the server reads the body from, instead of `content`. Prefer this when the body is already on disk (e.g. edited via `confluence_read`'s `output_file`): the assistant avoids re-emitting the whole page inline, which for large pages is slow. Mutually exclusive with `content`.
Behavior5/5

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

With no annotations, the description fully covers behavioral aspects: it warns about data loss of inline comments if 'localId's are omitted, clarifies that JFM is markdown (not wiki markup), and explains the dry_run behavior. These are critical details beyond the basic write operation.

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 description is relatively long but well-structured, starting with the main action and then adding important caveats. Each sentence provides useful information, though some redundancy could be trimmed. Overall, it is front-loaded and clear.

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

Completeness4/5

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

Given the absence of an output schema, the description does not detail the normal return value (e.g., updated page details). However, it covers dry_run output, the data loss warning, and usage scenarios. For a complex tool with 5 parameters and 1 required, it is largely complete but misses the standard response format.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds significant meaning beyond the basic parameter descriptions: it explains the mutual exclusivity of 'content' and 'content_path', the default for 'format', the importance of preserving 'localId's, and the preference for 'content_path' for large bodies. This enhances the agent's understanding of how to use parameters correctly.

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 clearly states that the tool overwrites an existing Confluence page's body, identified by 'id', and distinguishes itself from the sibling 'confluence_create' for creating new pages. This provides a specific verb+resource combination with clear differentiation.

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?

Explicit guidance is given: when to use this tool vs 'confluence_create', when to prefer 'content_path' over inline 'content' (large bodies), and the recommendation to set 'dry_run: true' first for validation. This covers when, when-not, and alternatives.

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/rust-works/omni-dev'

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