Skip to main content
Glama
notion-full-mcp
by cphoskins

upload_image_as_block

Upload a local image to Notion's workspace storage and insert it as an image block after a specified block or append it to a page, with an optional caption.

Instructions

Upload an image file to Notion and insert it as a new image block.

The image is stored in Notion's own workspace storage, so no external image host is needed.

Args: file_path: Local path to the image (PNG, JPEG, GIF, SVG, WEBP, etc.) after_block_id: If provided, insert immediately after this block (siblings). parent_id: If after_block_id is empty, append to this page/block instead. caption: Optional caption text for the image.

Exactly one of after_block_id or parent_id must be provided.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "file_path": "<file_path>"
    },
    "name": "upload_image_as_block"
  }
}

Input Schema

NameRequiredDescriptionDefault
captionNo
file_pathYes
parent_idNo
after_block_idNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.1

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation and reach profile is known. Beyond that, the description adds genuinely useful context: the image is stored in Notion's own workspace storage, so no external image host is required, which informs the agent about side effects and dependencies. Auth/permission requirements and overwrite behavior are still unstated, keeping it below 5.

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?

It is front-loaded with the one-sentence purpose, followed by a short storage note that earns its place, then a structured Args block. The closing constraint sentence is repeated logic already implied by the Args entries but is worth keeping for emphasis; otherwise there is little waste.

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?

An output schema exists, so return values need not be described, and the description covers insertion semantics, storage location, and parameter meanings for a mutating tool with four parameters. The remaining gap is operational: no mention of required permissions, size/format limits, or what happens on failure to upload.

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 0%, so the description carries the full burden, and it does document all four parameters: file_path with accepted image formats, after_block_id as the sibling insertion anchor, parent_id as the fallback append target, and caption as optional text. It also adds a cross-parameter constraint ('exactly one of after_block_id or parent_id') that the schema does not encode, which is real added value; it stops short of explaining the behavior when neither is supplied.

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

Purpose4/5

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

The description opens with a precise verb+resource+outcome: upload an image file to Notion and insert it as a new image block. It is distinguishable from generic file upload because it explicitly says 'image' and 'image block', though it never names upload_file_as_block or replace_image_block as the sibling alternatives, so the differentiation is inferential rather than stated.

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?

It gives a clear placement rule: use after_block_id to insert as a sibling, or parent_id to append to a page/block, and states the hard constraint that exactly one must be provided. What it lacks is guidance on when to choose this tool over upload_file_as_block or replace_image_block, so the routing guidance between siblings is absent.

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