Skip to main content
Glama

Get an image the buyer is entitled to

fulfil_image
DestructiveIdempotent

Deliver an image to the signed-in buyer, spending the image's price in credits (price.credits in search_images and get_image — often 1, sometimes more) if they do not already own it. Credits buy the personal license only; the commercial license is bought with create_checkout, and this then delivers it. If they DO already own it this is free and always will be — use it freely for re-downloads, and for a fresh download link. The purchased image comes as two links, both as the photographer framed it, uncropped: download_url, 2560px WebP on the long side, which a phone or desktop fits to its own screen as a wallpaper; and print_url, the original file at full resolution (often 10–35 MB), for printing (null when unavailable). Give the person both; they expire at download_expires_at, a day out, and their account page (account_url in get_account) lists every image they own with fresh links. The picture returned inline is a 1200px copy to show them what they got. Pass full_image: true to have the full file inline as well — often 1–3 MB — only if you can accept a result that large and save it yourself. Confirm the price with the person before spending credits. An image bought wholly with free-trial credits is the screen file only: print_url is null, print_included false, and print_offer says what the print costs — the full price again, in paid credits. With the person's agreement, call again with buy_print: true to spend them (or create_checkout kind=one_off to pay by card). After a card checkout for this image it spends nothing: it answers payment_pending until the payment lands, then delivers. Requires sign-in.

Input Schema

NameRequiredDescriptionDefault
buy_printNoFor an image the free trial bought (print_included false): buy its print file, spending print_offer.credits of PAID credit. Only with the person's agreement.
full_imageNoAlso return the full 2560px file inline. Large; see the description.
listing_idYes
abandon_checkoutNoOnly after payment_pending, and only when the person has said they will not pay by card: cancels the open payment link and spends credits instead.

Output Schema

NameRequiredDescriptionDefault
inlineYes
licenceYes
paid_byYes
file_nameYes
print_urlYes
listing_idYes
print_offerYes
download_urlYes
photographerYes
already_ownedYes
credits_spentYes
source_pixelsYes
entitlement_idNo
print_includedYes
credits_remainingYes
download_expires_atYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Despite annotations covering mutability, the description adds real behavioral context the annotations cannot: how many credits are spent, that re-downloads are free, link expiry within a day, payment_pending semantics, and the trial-credit/print distinction. It stops short of stating explicitly what is irreversibly consumed or how to remediate a failed spend, but the credit-spend warning is clearly surfaced and consistent with destructiveHint=true and idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The credit-spend and ownership rules are front-loaded, which is correct, but the single dense paragraph packs in peripheral detail (wallpaper fitting, 10–35 MB print sizes, account page re-listing) that lengthens it beyond what an agent needs to select and call it. Structure is a wall of prose rather than scannable branches.

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 a mutation tool with an output schema present and a required param, the description covers everything load-bearing: cost, pre-confirmation, ownership short-circuit, both checkout paths, pending-payment state, and sign-in requirement. Nothing needed to call it correctly is missing.

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 75% schema coverage, the description still adds value: full_image is explained in terms of size (1–3 MB) and the obligation to save it, and buy_print is tied to print_offer.credits of paid credit and the print_included false condition. listing_id is not described, but its meaning is evident from the surrounding narrative.

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 and resource ('Deliver an image to the signed-in buyer') and immediately distinguishes itself from get_image/search_images by its credit-spending, entitlement-granting effect. It also carves out the commercial-license path to create_checkout, so an agent can differentiate it from siblings.

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?

Explicit conditions are given for each branch: use it for re-downloads when the buyer already owns the image, use create_checkout for the commercial license or card payment, use buy_print when print_included is false, and use abandon_checkout after payment_pending. It even adds a process rule ('Confirm the price with the person before spending credits').

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.

Resources