Skip to main content
Glama

add_image_from_dial_url

Place an image from DIAL file storage onto a slide using its URL. The server downloads the bytes itself, keeping large generated images out of your context.

Instructions

Place an image that already lives in DIAL file storage onto a slide.

Use this for generated imagery: call your image model, save the result to DIAL files, then pass the file URL here. The server downloads the bytes itself, so nothing large passes through your context — prefer this over manage_image(source_type="base64") for anything bigger than a small icon.

image_url: a DIAL file reference — the "files/{bucket}/{path}" URL an upload returns, or the full https URL of that file on this DIAL installation (the ".../api/files/{bucket}/{path}" link an image deployment hands back works as-is). Arbitrary web URLs are NOT downloaded: to use a picture from the web, fetch it yourself and store it in DIAL file storage first.

slide_index: 0-based, like the other content tools (visual QA slide numbers are 1-based; slide_index 0 is slide 1). left, top, width, height: inches. Give width and height to define the box the picture should occupy — for a half-and-half slide on a 13.33in deck, text on the left and left=6.9, top=1.2, width=5.6, height=4.5 for the image. Omit both to keep the image's natural size (clamped to the slide). fit: how the picture relates to that box. "contain" (default) largest undistorted size that fits, centred in the box — safe for photos and illustrations; "cover" fills the box exactly, cropping the overflowing edges; "stretch" forces the exact box and will distort the image.

Returns the shape index and the geometry actually applied ("placed": left/top/width/height in inches), which may be smaller than the box you asked for under "contain".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fitNocontain
topNo
leftNo
widthNo
heightNo
image_urlYes
slide_indexYes
presentation_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv2.6.0

TDQS

A5/5.0
Behavior5/5

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

With no readOnly/destructive annotations, the description carries the full behavioral burden and does so thoroughly. It discloses that the server downloads bytes itself, that arbitrary web URLs are not downloaded, that natural size is clamped to the slide, and that returned geometry may differ from the requested box under 'contain'.

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 long but earns its length by documenting 8 parameters in a zero-coverage schema. It is front-loaded with the core action, organized by parameter, and every paragraph adds necessary detail without redundancy.

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?

Given the tool's complexity and complete lack of schema property descriptions, the description covers all essential aspects: accepted URL forms, coordinate system, fit behavior, return value, and comparison with a sibling tool. The presence of an output schema means return-value detail is a bonus, and it still includes it.

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?

Schema description coverage is 0%, so the description must explain all parameters itself. It clearly defines image_url accepted formats, slide_index as 0-based, dimensions in inches, fit modes ('contain', 'cover', 'stretch'), and includes a concrete example. This fully compensates for the schema's lack of 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 a specific verb and resource: 'Place an image that already lives in DIAL file storage onto a slide.' It clearly distinguishes itself from manage_image by explaining the DIAL URL path and when to prefer this tool over base64-based insertion.

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?

The description explicitly tells the agent when to use this tool ('for generated imagery'), names the alternative (manage_image(source_type='base64')), and states when not to use it for arbitrary web URLs. This is strong routing guidance that leaves little to inference.

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

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/photonn/dial-pptx-mcp'

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