Skip to main content
Glama

Refine a photo frame design

refine_frame

Ask for a changed version of a frame in an existing design thread — 'darker', 'less ornament', 'make the flowers smaller', 'more gold'. Call it with the threadId that check_generation returned for start_frame, and ONLY when the operator asks for a change: every call spends part of the account's free daily allowance, so never iterate on your own initiative. It returns immediately with a job id; call check_generation for the new preview. Earlier versions in the thread stay available to save_frame, so a change the operator dislikes loses nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptYesWhat to change, in the operator's words. It is read with the whole thread as context, so 'the same but darker' works; there is no need to repeat the original description.
threadIdYesThe design thread, from check_generation's result for start_frame.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYes
noteNo
whatYes
errorNo
jobIdYes
stateYes
threadIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A5/5.0
Behavior5/5

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

Annotations show readOnlyHint=false and destructiveHint=false, but the description adds crucial behavioral context: each call consumes part of the daily allowance, it returns immediately with a job id, and earlier thread versions remain available to save_frame, so reversibility is guaranteed. This goes well beyond the structured annotations.

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?

Four sentences, each earning its place: examples of prompts, required threadId source, strict when-to-use rule with cost rationale, immediate-return behavior, and retention guarantee. The most important constraints are front-loaded, and there is no wasted wording.

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 mutation profile, async behavior, cost implications, and interaction with sibling tools, the description covers all needed aspects: what it does, when to call it, how to get threadId, what to do after the call, and that changes are lossless. The output schema covers the return value, so nothing further is needed.

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 coverage is 100%, and the description adds meaningful semantics: prompt is interpreted with thread context, so phrases like 'the same but darker' work without repeating the original, and threadId comes from check_generation's result for start_frame. This clarifies usage beyond the raw parameter 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 states a specific verb action ('Ask for a changed version of a frame') and identifies the resource as an existing design thread, with concrete examples like 'darker' and 'make the flowers smaller'. It clearly distinguishes this tool from siblings such as start_frame (creating) and check_generation (polling).

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?

Explicitly states when to use the tool ('ONLY when the operator asks for a change'), when not to use it ('never iterate on your own initiative'), where threadId comes from, and directs the agent to call check_generation for the resulting preview. The cost warning provides a clear reason for the constraint.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.