Skip to main content
Glama

Keynote: add image

keynote_add_image
Destructive

Place an image or logo onto a Keynote slide at a chosen position and width, with dry-run preview. Slide text stays untouched; use chart or table tools for data.

Instructions

Place an image file (png, jpg, heic, pdf…) on a slide; optional x/y position and width in points. All text verified untouched. dry_run=true previews the change on a copy without touching the file. Use to place a picture or logo on a slide. For data, use keynote_add_chart or keynote_add_table rather than a picture of a chart.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xNoLeft edge in points (give with y); omit to let Keynote place it.
yNoTop edge in points from the slide's top-left corner (give with x).
pathYesPath to the .key deck (absolute, or starting with ~).
imageYesImage file to place (png, jpg, heic, pdf…).
slideYesSlide number, 1-based (keynote_list_slides lists them).
widthNoImage width in points; height keeps the aspect ratio.
dry_runNotrue = make the change on a throwaway copy, run every check, and return what would change; the file itself is not touched. Use it before broad or risky edits and show the user.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv2.4.1
    • addedInput schema / properties / dry_run / description
      Added value: +"true = make the change on a throwaway copy, run every check, and return what would change; the file itself is not touched. Use it before broad or risky edits and show the user."
    • addedInput schema / properties / image / description
      Added value: +"Image file to place (png, jpg, heic, pdf…)."
    • addedInput schema / properties / path / description
      Added value: +"Path to the .key deck (absolute, or starting with ~)."
    • addedInput schema / properties / slide / description
      Added value: +"Slide number, 1-based (keynote_list_slides lists them)."
    • addedInput schema / properties / width / description
      Added value: +"Image width in points; height keeps the aspect ratio."
    • addedInput schema / properties / x / description
      Added value: +"Left edge in points (give with y); omit to let Keynote place it."
    • addedInput schema / properties / y / description
      Added value: +"Top edge in points from the slide's top-left corner (give with x)."
  2. First observedv2.4.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real context: text is verified untouched, and dry_run previews changes on a throwaway copy without touching the file. This meaningfully supplements the safety profile, though it doesn't describe post-placement state or 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.

Conciseness4/5

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

Front-loads the action and key constraints, and every sentence carries routing or safety value. Slightly redundant in restating placement ('Place an image file...' then 'Use to place a picture or logo'), but overall tight.

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?

With an output schema present and 100% param coverage, the description needn't explain return values, and it covers the dry_run safety path and sibling routing. Complete enough to invoke correctly, missing only edge-case behavior for a destructive placement tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already documented (x/y pairing, width keeping aspect ratio, slide 1-based). The description mentions x/y/width briefly but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 specific verb and resource ('Place an image file ... on a slide') and explicitly names the sibling tools it is not (keynote_add_chart, keynote_add_table). An agent can distinguish it from keynote_slide_image and other siblings at a glance.

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?

Gives explicit when-to-use ('place a picture or logo on a slide') and when-not-to-use with named alternatives ('For data, use keynote_add_chart or keynote_add_table rather than a picture of a chart'). Nothing is left to inference.

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