Skip to main content
Glama

Copy or Move Blocks

notion_copy_blocks
Destructive

Copy Notion blocks with all nested content to a page or block at start, end, or after another block; optionally move originals with dry-run preview and undo.

Instructions

Copy blocks (with everything nested inside them) to another spot: a page or block, at the start, end, or after a block. With move=true the originals are trashed afterward (the API has no move, so moved blocks get new ids and lose their comments). Sub-pages among the given blocks are moved with Notion's page move, or duplicated when copying; they land at the end of the destination page. A move is refused if it would lose something the API can't recreate (databases, read-only blocks, original synced blocks whose references would break). Copying an original synced block creates a reference to it. Moves default to dry_run=true. One notion_undo reverts everything.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesDestination page or block.
moveNo
dry_runNoDefault: true for moves, false for copies.
positionNoend
block_idsYesBlocks to copy, in the order they should appear.
after_block_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.10.0

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the destructiveHint annotation: moved blocks get new ids and lose comments, sub-pages use page-move semantics and land at the destination end, moves are refused for non-recreatable content, and one notion_undo reverts everything. This is exactly the operational context an agent needs before mutating state.

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?

Dense but front-loaded: the core operation comes first, then caveats and safety. Every sentence carries information, though the paragraph is long enough that it could be split for faster scanning.

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?

For a six-parameter destructive mutation with no output schema, the description covers the safety model, edge-case refusals, id-loss behavior, and undo path thoroughly. Return-value details are unspecified, but the absence of adverse outcomes for the caller is largely addressed.

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?

With only 50% schema coverage, the description compensates by explaining the semantics of move, dry_run (default true for moves), and position (start/end/after a block). It adds real meaning beyond the terse schema, though after_block_id's linkage to position=after_block edges is only implied.

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 concrete verb (copy/move) and resource (blocks, with nested children) and the destination options. It clearly distinguishes itself from siblings like notion_insert_blocks and notion_patch_block by covering relocation rather than creation or editing.

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

Usage Guidelines4/5

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

Explains the copy-vs-move decision (move=true trashes originals) and the dry_run default that makes moves safe to preview, giving clear context for when to use each mode. It stops short of naming an explicit alternative tool for the plain-insert case, but the mode guidance is strong.

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