Skip to main content
Glama

StockCake

Server Details

Search millions of CC0 public-domain AI images: previews, dimensions, provenance, license.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct resource+action: search_images (text search) vs find_similar_images (by image id), get_image (metadata/preview) vs download_image (full-res link), and generate_image/create_video/resize_image/upscale_image are separate operations. Async job polling (get_job), account (get_account), models (list_models), and license (get_license_info) are all unambiguous.

Naming Consistency5/5

Every tool follows a clean snake_case verb_noun convention (create_video, download_image, find_similar_images, generate_image, get_account, get_image, get_job, get_license_info, list_models, resize_image, search_images, send_feedback, upscale_image). No camelCase mixing or vague verbs.

Tool Count5/5

13 tools is well within the ideal 3-15 range and each earns its place: search/retrieve/download, four generation/edit operations, async job handling, and supporting metadata tools. No obvious redundancy or filler.

Completeness4/5

The surface covers the full lifecycle for a stock/generation service: search, fetch metadata, download, find similar, generate/edit images and video, poll jobs, plus account, models, and license info. Minor gap: no dedicated way to list a user's own generated/edited images as a set (they surface via get_image), and no batch operations.

Available Tools

13 tools
create_videoCreate VideoAInspect

Generate a short video from a prompt and/or a start image with one of StockCake's video models (list_models). Priced per second of output; needs a plan. Video usually takes longer than 45 s: expect a pending result and poll get_job. Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoTier key from list_models (e.g. 720p, 1080p, 720p-audio)
modelNoVideo model id from list_models (default: MiniMax H3)
promptNoRequired unless start_image is given
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
start_imageNoAnimate from this image (stock id or your edited image id)
aspect_ratioNoText-to-video only; a start image sets the ratio
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
negative_promptNo
duration_secondsNoClip length; must be one of the model's durations

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: pricing is per second of output, a plan is required, an account sign-in will be prompted by the host, and the call is typically asynchronous (>45 s, expect pending and poll get_job). The annotations only give the generic write/open-world/idempotency profile; the description supplies the operational reality.

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?

Three sentences, zero filler, front-loaded with what is produced before the cost, latency, and auth consequences. Every clause carries information an agent needs before calling.

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?

For a 10-parameter paid, async, account-gated generation tool with an output schema, the description covers the missing pieces an agent must know: cost model, plan/account requirement, async polling expectation, and where to get valid model ids. Return values are rightly left to the output schema.

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 90%, so the schema already documents tier, model, prompt, aspect_ratio, duration, and even the conversation_id protocol. The description only confirms the prompt-or-start-image relationship and points at list_models for model ids; with the schema doing the heavy lifting, 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+resource ("Generate a short video") plus the inputs it accepts ("from a prompt and/or a start image") and the provider scope (StockCake's video models). This clearly separates it from the sibling generate_image, which is the nearest ambiguous alternative.

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?

Explicitly routes to list_models for model/tier selection and to get_job for polling, and states the prerequisites (paid plan, free StockCake account). It never says when NOT to use this tool (e.g. when the user wants a still image instead), so it stops short of a 5.

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

download_imageDownload ImageA
Read-onlyIdempotent
Inspect

Full-resolution download link for a StockCake image (CC0) or one of your edited images. Unmetered — no credits. format "png" returns the lossless sibling when one exists (falls back to jpg). Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStock image id or your own edited image id
formatNoDefault jpg (the original)
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the bar is lower. The description adds real behavioral context beyond them: it is unmetered/no-credit, requires sign-in, and explains png fallback behavior. It does not cover pagination or response shape, but the output schema exists.

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?

Three sentences, front-loaded with the core purpose, then cost, then format/auth caveats. No filler or repetition; it is tight though slightly dense.

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?

For a read-only download tool with full schema coverage and an output schema, the description covers auth, billing, and format behavior adequately. Nothing essential is missing, though return/download mechanics are left to the output schema.

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 100% schema description coverage the baseline is 3, and the description meaningfully exceeds it by explaining the 'format' parameter semantics: png returns the lossless sibling when one exists and falls back to jpg. That is genuine meaning the schema's one-line 'Default jpg' does not convey.

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 states a specific verb and resource ('Full-resolution download link for a StockCake image... or one of your edited images') and scopes it to full-resolution CC0/edited assets, which implicitly separates it from get_image, resize_image, and upscale_image. It does not explicitly name a sibling to contrast against, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies useful context ('Unmetered — no credits') and a prerequisite ('Requires a free StockCake account'), but gives no explicit when-to-use/when-not guidance or alternative routing versus the sibling tools. Usage is implied rather than directed.

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

find_similar_imagesFind Similar StockCake ImagesA
Read-onlyIdempotent
Inspect

Find images visually similar to a given StockCake image id (from search_images results). total_results is the number of similar results returned on this page, not a catalog-wide count.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric image id from a previous result
pageNoPage number, 1-5
limitNoResults to return, 1-12 (default 12). Ask for fewer to save tokens.
localeNoSite locale for the user (default en). Titles and page links are localized; descriptions are English.
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
has_moreYes
refinementsNoExact mood/style facet values available for this query; counts = how many of the current matches carry each value. mood and style are exact filters (both together keep only their intersection), so a small count means a small result set — rephrase the query instead.
total_pagesYes
license_noteYes
total_resultsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a genuinely useful caveat that total_results counts only similar results on the page, not catalog-wide, but does not extend to pagination limits, auth, or other behavior.

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?

Two tight sentences, front-loaded with the core action and followed by the one semantic caveat an agent could otherwise misread. Nothing is wasted.

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, rich annotations, and 100% schema description coverage, the description does not need to re-explain parameters or returns. It is complete for its role, only lacking explicit alternative routing that would lift it further.

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%, with each of the 7 parameters (page limits, locale, context, conversation_id mechanics) fully documented in the schema itself. The description adds no parameter syntax or meaning beyond that, so the baseline 3 applies.

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 states a specific verb+resource+scope: 'find images visually similar to a given StockCake image id'. Referencing '(from search_images results)' ties it to the sibling that produces the input, implicitly separating it from text search. It is clear, though it never explicitly names an alternative tool it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tagging the id as coming 'from search_images results' implies the workflow (search first, then find similar), but there is no explicit when-to-use/when-not guidance or named alternatives. Usage is implied rather than stated.

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

generate_imageGenerate ImageAInspect

Generate a new image from a prompt with one of StockCake's AI models (list_models). Charges credits; free credits cover the free models. Waits up to 45 s — a pending result carries a job_id for get_job. Optional reference images guide the composition (plan-capped). Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoTier key from list_models (e.g. 1k, 2k, standard). Default: the model's default tier.
modelNoModel id from list_models. Default: the site default for subscribers, the free model otherwise.
promptYes
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
aspect_ratioNo
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
reference_imagesNoStock image ids or your own edited image ids used as references

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the credit cost model, that free credits cover free models, the 45 s wait with a job_id fallback for async retrieval, that reference images are plan-capped, and that a StockCake account/sign-in is required. These are exactly the auth, cost, and latency traits an agent needs and that readOnlyHint/idempotentHint do not convey.

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?

Four tightly packed sentences with the core action front-loaded and no filler; each clause carries a distinct fact (models, cost, latency, auth). It is dense to the point that the parenthetical tool references crowd the prose slightly, keeping it just under a 5.

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?

An output schema exists, so return values need not be explained, and the description already covers cost, latency, async continuation via job_id, reference-image constraints, and authentication. For an 8-parameter generative tool this leaves nothing material for the agent to guess.

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 coverage is 75% and the schema itself documents tier, model, aspect_ratio, conversation_id, and the analytics-only llm_model well. The description adds useful semantics on top: model ids come from list_models, and reference_images are constrained by plan. It does not touch tier or aspect_ratio, but the schema carries those adequately.

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?

Specific verb (Generate) plus resource (a new image) plus the mechanism (from a prompt with one of StockCake's AI models). It routes the agent to list_models for model selection, and the 'new image' framing implicitly separates it from search_images/find_similar_images, which return existing images.

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?

Clearly states the operating context: use list_models to pick a model, get_job when the call returns pending, and that an account is required with the host prompting sign-in. It stops short of an explicit when-not/alternative statement (e.g. 'use search_images to find existing images'), leaving that to inference from siblings.

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

get_accountStockCake AccountA
Read-onlyIdempotent
Inspect

The signed-in user's plan, credit balance (free / subscription / purchased), next resets, download quality and output formats. Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value with the authentication requirement and the note that the host will prompt to sign in, which is exactly the kind of context annotations cannot express. It does not cover rate limits or failure modes, so not a 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?

Two sentences with no filler; the returned data is front-loaded and the account prerequisite follows. The 'free / subscription / purchased' parenthetical earns its place by enumerating credit types, but the sentence is somewhat dense rather than optimally structured.

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 rich annotations, a 100%-covered schema and an output schema that carries the return shape, the description only needs to frame purpose and prerequisites, which it does. Nothing critical for invoking the tool is missing, though guidance against the adjacent get_license_info would make it fully complete.

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%, and all three parameters (context, llm_model, conversation_id) carry detailed inline descriptions, including the conversation_id continuity rule. The description adds nothing about parameters, so the baseline 3 applies.

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 names a specific resource (the signed-in user's plan, credit balance, reset dates, download quality and output formats), which unambiguously separates it from the image/video generation and search siblings. It never explicitly contrasts itself with the nearest sibling, get_license_info, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a prerequisite (a free StockCake account, with the host prompting sign-in), which is useful context, but it never says when to reach for this tool versus get_license_info or list_models. Usage is only implied by the data it returns.

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

get_imageGet StockCake ImageA
Read-onlyIdempotent
Inspect

Fetch one image with full metadata: an inline preview the model can see (unless include_preview is false), real pixel dimensions, AI-generation provenance (prompt, dates, style), license details, and attribution snippets. Also shows the signed-in user's own edited images (ids ≥ 10000000000, as returned by generate_image, resize_image and upscale_image).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric image id (from search results), one of your own edited image ids (from a generate / resize / upscale result; needs the signed-in account), or the image's CDN uuid
localeNoSite locale for the user (default en). Titles and page links are localized; descriptions are English.
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
include_previewNoDefault true. Set false to skip the inline preview image and save tokens.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
tagsYes
titleYes
licenseYes
page_urlYes
dimensionsYesFull-resolution pixel size; null when unknown
provenanceYes
attributionYes
descriptionYes
preview_urlYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real behavioral context beyond them: the response includes a model-visible inline preview whose token cost can be avoided via include_preview=false, and that edited-image ids require an authenticated account. It stops short of describing failure behavior for unknown ids.

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?

Two dense sentences with no filler, front-loaded with the return payload an agent most needs to decide whether to call it, followed by the id-space clarification. Every clause carries information.

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 a full annotation set, 100% schema coverage and an output schema, the description is nearly complete for a read-by-id tool: it covers return contents, accepted id forms, and the preview toggle. The only missing piece is explicit routing against sibling retrieval/download tools, which is a guidance rather than completeness gap.

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 coverage is 100%, so the baseline is 3, but the description adds meaning: it explains that the preview is inline and model-visible (why include_preview matters) and maps the id space to its sources, including the ≥10000000000 edited-image range. This reinforces and contextualizes the schema rather than merely repeating it.

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 ('Fetch one image with full metadata') and enumerates exactly what comes back: inline preview, pixel dimensions, AI provenance, license details, attribution snippets. It also distinguishes this tool from the generation siblings by clarifying that edited-image ids are the ones returned by generate_image, resize_image and upscale_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the mention that ids come 'from search results' or from generate/resize/upscale results tells the agent where a valid id originates, and names those siblings. But there is no explicit when-to-use-this-vs-alternative guidance (e.g., get_image vs download_image vs find_similar_images), and no exclusions or prerequisites beyond the parenthetical about needing a signed-in account.

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

get_jobGet Job StatusA
Read-onlyIdempotent
Inspect

Status and result of a generate_image / upscale_image / resize_image / create_video job you started (pending, completed with URLs, or error with refund state). Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld/non-destructive, so the bar is lower; the description adds real value by disclosing the account/auth requirement ('requires a free StockCake account, host will prompt to sign in') and the possible outcome states including an error with refund state, which the annotations do not convey.

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?

Two tightly packed sentences, front-loaded with purpose and scoped to the originating tools, with the auth caveat following. No filler; every clause carries information.

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 needn't be described, yet the description still summarizes outcome states, and it covers the auth prerequisite. The only minor gap is not stating where job_id originates, though 'job you started' implicitly ties it to the creator tools.

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 coverage is 75%, and the description adds no syntax or source detail for job_id beyond 'job you started'; context, llm_model, and conversation_id are documented in the schema itself. Baseline 3 applies since the schema does the heavy lifting and the description does not extend it.

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+resource (get job status and result) and names the exact sibling tools whose jobs it tracks (generate_image, upscale_image, resize_image, create_video). An agent can distinguish it from those creators and from get_image/get_account without opening any schema.

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?

Strongly implies the when-to-use ('a ... job you started'), i.e. poll after kicking off one of the named async tools. It doesn't explicitly state when not to use it or name a polling alternative, but there is no competing status tool among the siblings, so context is clear.

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

get_license_infoStockCake License InformationB
Read-onlyIdempotent
Inspect

License and usage terms for all StockCake images (site-wide CC0 / public domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real substance by stating the license is site-wide CC0/public domain, but says nothing about auth needs, rate limits, or scope boundaries.

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?

A single tight sentence with the key term (CC0 / public domain) front-loaded in parentheses. Zero filler.

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?

For a simple read-only informational tool whose safety profile is fully covered by annotations, the description adequately conveys what is returned (license and usage terms). Minor gap: it doesn't state the response shape or whether terms vary per image, though the 'site-wide' wording implies uniformity.

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 context, llm_model, and conversation_id are fully documented in the schema, including edge cases ('pass unknown — never guess'). The description adds no parameter meaning, so the baseline 3 applies.

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?

Clearly states the resource ('License and usage terms for all StockCake images') and scopes it ('site-wide CC0 / public domain'). It reads distinctly from the image-manipulation siblings, though it never explicitly names a differentiating sibling, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the eleven siblings. An agent can infer it is for license questions, but nothing routes it explicitly against e.g. get_image or search_images.

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

list_modelsList StockCake AI ModelsA
Read-onlyIdempotent
Inspect

Image and video models available to generate_image / create_video with the credit price of every tier. Free-credit models are flagged; video is priced per second. Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoReturn only one catalog
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: an auth requirement (free StockCake account, host prompts sign-in) and pricing semantics (video billed per second, free-credit models flagged).

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?

Two dense sentences, front-loaded with what the tool returns and followed by pricing and auth caveats. No filler, nothing restated from the title.

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, return-value documentation is unnecessary, and the description covers the auth prerequisite and pricing model. It could have been slightly more explicit about when to call it relative to the generation tools, but nothing needed to invoke it correctly is missing.

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 the parameters are fully documented in the schema and the baseline is 3. The description corroborates that the result is split into image and video catalogs and explains pricing units, but adds no syntax or usage detail beyond what the schema already supplies.

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 states exactly what is returned: image and video models with per-tier credit prices, free-credit flags, and per-second video pricing, and ties the catalog to the sibling tools that consume it (generate_image / create_video). It is clear which resource is being enumerated, though the listing verb itself is only implied by the name/title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the catalog is consulted before calling generate_image or create_video, and the kind parameter narrows it to one catalog, but there is no explicit 'call this when…' guidance or statement of when to skip it. Usage is inferable rather than stated.

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

resize_imageResize Image (Outpaint)AInspect

Change an image's aspect ratio by extending the canvas with AI (GPT Image 2.5) — the subject is kept, new area is generated. Charges credits. Output is the model's native size — about 1.5 megapixels, up to 1536 px on the long edge — whatever the source size; the result reports exact dimensions. For print or larger web use, run upscale_image on the result. Waits up to 45 s, then returns a job_id for get_job. Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesA StockCake image id (from search_images), one of your own edited image ids (from a previous result), or a job_id. Never a URL.
promptYesWhat should fill the extended canvas, e.g. 'extend the sandy beach and sky; keep the subject unchanged, do not crop or stretch'
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
aspect_ratioYesTarget ratio
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations mark this as a non-read-only, non-idempotent, open-world mutation, and the description adds substantial context beyond them: it charges credits, the output is the model's native ~1.5 MP size regardless of source, it waits up to 45 s before returning a job_id for get_job, and it requires a free StockCake account. This is exactly the async/billing/auth detail annotations cannot convey.

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?

Front-loads the operation and its subject-preservation guarantee, then layers cost, output-size behavior, the async fallback, and auth prerequisites in tight, non-redundant sentences. No sentence is filler.

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?

For a 6-parameter, credit-charging async tool with an output schema, the description covers the essentials an agent must know to call it correctly: cost, expected output resolution, the 45 s wait/job_id path, and the sign-in requirement. Nothing material is missing.

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 every parameter (including the non-obvious llm_model and conversation_id conventions) is already documented in the schema. The description adds no parameter-level guidance beyond what the schema provides, 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 ("Change an image's aspect ratio by extending the canvas") and immediately clarifies the mechanism and preservation semantics ("the subject is kept, new area is generated"). It is clearly distinguishable from sibling generate_image (no source image) and upscale_image (which is named for the larger-output case).

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?

Explicitly routes the agent to a sibling when needed: "For print or larger web use, run upscale_image on the result." It also names the required account and the sign-in prompt. It stops short of stating when NOT to use this tool (e.g. when the user wants a from-scratch image via generate_image), so it is clear context without full exclusion guidance.

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

search_imagesSearch StockCake ImagesA
Read-onlyIdempotent
Inspect

Natural-language search over StockCake's catalog. total_results is the total number of matches across the whole catalog, not just this page. refinements lists exact mood/style values for this query with counts (how many current matches carry each); both are exact filters, so a small count means few results. Start with a short query; when total_results is small or off-target, retry with fewer keywords or different phrasing.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNoExact facet value — pick one from refinements.mood of a previous search_images result (check refinements.counts.mood first: it is a hard filter, not a boost)
pageNoPage number, 1-5
typeNo
colorNoDominant color, e.g. a hex value like #ff0000
limitNoResults to return, 1-12 (default 12). Ask for fewer to save tokens.
queryYesShort subject, 2–5 words (e.g. 'red vintage rocket'). Long sentences hurt recall: start short, add one qualifier at a time; if results are thin, drop keywords or rephrase.
styleNoExact facet value — pick one from refinements.style of a previous search_images result (check refinements.counts.style first: it is a hard filter, not a boost)
localeNoSite locale for the user (default en). Titles and page links are localized; descriptions are English.
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
orientationNo
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
has_moreYes
refinementsNoExact mood/style facet values available for this query; counts = how many of the current matches carry each value. mood and style are exact filters (both together keep only their intersection), so a small count means a small result set — rephrase the query instead.
total_pagesYes
license_noteYes
total_resultsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine beyond-schema context: total_results is a catalog-wide count, and refinements mood/style are hard filters where small counts mean few matches. It does not discuss rate limits or pagination limits (page max 5), keeping it from a 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?

Four front-loaded sentences, each carrying information: search scope, two output-field clarifications, and query strategy. No filler or repetition, though the output-field sentences sit slightly ahead of more actionable query guidance.

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?

For a 12-parameter search tool with an output schema already present, the description covers the non-obvious behavioral contract (count semantics, hard-filter facets, retry strategy). Return values needn't be explained given the output schema. Minor gap: no mention of the page 1-5 ceiling or result-set interplay with limit.

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 83%, so the schema already carries most parameter meaning (facet semantics, locale, limits, conversation_id protocol). The description's added text explains output fields (total_results, refinements) rather than parameters, so it adds little parameter-level meaning beyond the baseline.

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?

States a specific verb and resource ('Natural-language search over StockCake's catalog'), which is clear on its own. It does not name or distinguish against potential sibling confusion such as find_similar_images or generate_image, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides real usage guidance for query crafting and retrying ('Start with a short query; when total_results is small or off-target, retry with fewer keywords'), which is better than nothing. However it never says when to choose this tool over siblings like find_similar_images or generate_image, so routing guidance is implied at best.

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

send_feedbackA
Read-onlyIdempotent
Inspect

Send feedback about this server to its developers. Most important: report a missing capability whenever no available tool fits your task, even if you can work around it (feedback_type "missing_capability"). Also welcome: a tool that failed or confused you, an unhelpful error, or something that worked well. This records the feedback; it does not add or change tools. Do not include user PII or sensitive content.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailsNoOptional longer context: what you tried, exact parameter values, the error text you saw, and any workaround you used. Omit when the summary says it all.
summaryYesOne self-contained sentence. For 'missing_capability': the capability you needed, e.g. 'No tool to delete multiple cohorts in one call.' For 'issue': the tool and the problem, e.g. 'query-trends rejects relative date ranges with an unclear error.'
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
sentimentNoOptional: how the experience felt overall.
tool_nameNoOptional: the existing tool this feedback is about (for 'issue' or 'praise'). Leave empty for 'missing_capability' - the point is that no tool fits.
feedback_typeYesWhat kind of feedback this is. Use 'missing_capability' when the tool you needed does not exist in the tool list - nothing failed, the capability is absent (this is the most valuable report; send it even if you found a workaround). Use 'issue' when an existing tool behaved badly: it failed, returned a confusing error, or its description or schema misled you. Use 'praise' when something worked notably well. Use 'other' for anything else.
task_completedNoOptional: whether you still completed the user's task despite the problem.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
friction_pointsNoOptional: the specific moments that slowed you down, as short bullet-like sentences, quoting exact tool names, parameters, or error text.
suggested_improvementNoOptional: the concrete change that would have helped, e.g. the tool to add, the description to reword, or the error message to improve.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover readOnly/idempotent/non-destructive, so the safety profile is handled, and the description adds the crucial behavioral fact that this records feedback without adding or changing tools, plus a PII/sensitive-content prohibition. It does not mention whether feedback is reviewed, rate limits, or what happens after submission, but for a fire-and-forget reporting tool that is a minor gap.

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 tight sentences that front-load the primary instruction (report missing capabilities whenever no tool fits) before the secondary cases and the important constraints. Every sentence carries non-redundant information, including the PII warning placed last as a guardrail.

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?

For a feedback-reporting tool with no output schema and full schema description coverage, the description supplies exactly the missing pieces: the priority ordering of feedback types, the fact that nothing is added or changed, and the content restriction. Nothing an agent needs in order to call it correctly is absent.

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 coverage is 100%, so the schema already documents all ten parameters thoroughly, including enum values, examples, and edge-case instructions (conversation_id must be passed unchanged and never invented, llm_model must be 'unknown' rather than guessed). The description adds no parameter meaning beyond what is in the schema, so the baseline 3 is correct and appropriate.

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+resource (send feedback to developers) with an unusually clear statement of primary purpose, weights the missing_capability case explicitly, and distinguishes itself from every sibling (all image/video tools) by being the only meta/reporting tool.

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 names when to use it (report missing capability whenever no tool fits, even with a workaround) and enumerates the other cases (failed tool, confusing error, praise, other) with feedback_type values attached. Conditions are attached to categories, so the agent knows which type to pick.

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

upscale_imageUpscale ImageAInspect

Upscale a StockCake image or one of your edited images 2x, 4x or 8x (lossless PNG output). Plan quality caps apply; charges credits otherwise. Waits up to 45 s, then returns a job_id for get_job. Requires a free StockCake account (the host will prompt to sign in).

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesA StockCake image id (from search_images), one of your own edited image ids (from a previous result), or a job_id. Never a URL.
scaleYes
contextYesIn one sentence, what is the user trying to make or find?
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, openWorld=true, idempotent=false): it discloses lossless PNG output, plan quality caps and credit charges, a 45 s wait before falling back to an async job_id handled by get_job, and a required free StockCake account with a host sign-in prompt. That is exactly the operational context an agent needs before committing to a non-idempotent, possibly billed call.

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?

Three tightly packed sentences, front-loaded with the action and scale options, then cost/cap behavior, then async and auth requirements. No filler and nothing repeated from the schema.

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?

For a non-idempotent, credit-consuming, potentially asynchronous tool it covers billing, timing, continuation via get_job and the auth prerequisite, and an output schema exists so return values need no explanation. The only gap is the absence of any routing hint versus resize_image for the agent deciding between them.

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 coverage is 80%, so the schema already documents image sources, the scale consts, context, llm_model and conversation_id in detail. The description reinforces accepted image sources and the 2x/4x/8x scale values but adds no syntax or semantics the schema lacks, so the baseline 3 applies.

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?

States a specific verb (upscale) and resource (StockCake or edited image), plus the exact multipliers 2x/4x/8x and lossless PNG output. It does not differentiate from the sibling resize_image, which also transforms image dimensions, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: it tells you the tool upscales existing images and that plan caps/billing apply, but never says when to choose it over resize_image or generate_image, nor what happens if the plan cap blocks the request beyond 'charges credits otherwise'.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updates
    • Changedfind_similar_images3 fields changed
      • changedOutput schema / properties / refinements / description
        Previous value: -"Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow"New value: +"Exact mood/style facet values available for this query; counts = how many of the current matches carry each value. mood and style are exact filters (both together keep only their intersection), so a small count means a small result set — rephrase the query instead."
      • addedOutput schema / properties / refinements / properties / counts
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mood": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "style": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "mood",
        +    "style"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / refinements / required
        Previous value: -[
        -  "mood",
        -  "style"
        -]New value: +[
        +  "mood",
        +  "style",
        +  "counts"
        +]
    • Changedgenerate_image1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "image": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "id": {
        -            "description": "Edited image id — pass it to download_image or as an image reference",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "id",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "completed",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "image",
        -      "credits_charged"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "pending",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "credits_charged",
        -      "message"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "message"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "image": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "dimensions": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "height": {
        +                    "type": "number"
        +                  },
        +                  "width": {
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "width",
        +                  "height"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Output pixel size; null when the file could not be probed"
        +          },
        +          "id": {
        +            "description": "Edited image id — pass it to get_image (preview), download_image, or as an image reference",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "url",
        +          "dimensions"
        +        ],
        +        "type": "object"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "completed",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "image",
        +      "credits_charged"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "pending",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "credits_charged",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_image2 fields changed
      • changedInput schema / properties / id / anyOf
        Previous value: -[
        -  {
        -    "exclusiveMinimum": 0,
        -    "maximum": 2147483647,
        -    "type": "integer"
        -  },
        -  {
        -    "maxLength": 64,
        -    "minLength": 4,
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "exclusiveMinimum": 0,
        +    "maximum": 9007199254740991,
        +    "type": "integer"
        +  },
        +  {
        +    "maxLength": 64,
        +    "minLength": 4,
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Numeric image id (from search results) or the image's CDN uuid"New value: +"Numeric image id (from search results), one of your own edited image ids (from a generate / resize / upscale result; needs the signed-in account), or the image's CDN uuid"
    • Changedresize_image1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "image": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "id": {
        -            "description": "Edited image id — pass it to download_image or as an image reference",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "id",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "completed",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "image",
        -      "credits_charged"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "pending",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "credits_charged",
        -      "message"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "message"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "image": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "dimensions": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "height": {
        +                    "type": "number"
        +                  },
        +                  "width": {
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "width",
        +                  "height"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Output pixel size; null when the file could not be probed"
        +          },
        +          "id": {
        +            "description": "Edited image id — pass it to get_image (preview), download_image, or as an image reference",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "url",
        +          "dimensions"
        +        ],
        +        "type": "object"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "completed",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "image",
        +      "credits_charged"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "pending",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "credits_charged",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_images5 fields changed
      • changedInput schema / properties / mood / description
        Previous value: -"Exact facet value — pick one from refinements.mood of a previous search_images result"New value: +"Exact facet value — pick one from refinements.mood of a previous search_images result (check refinements.counts.mood first: it is a hard filter, not a boost)"
      • changedInput schema / properties / style / description
        Previous value: -"Exact facet value — pick one from refinements.style of a previous search_images result"New value: +"Exact facet value — pick one from refinements.style of a previous search_images result (check refinements.counts.style first: it is a hard filter, not a boost)"
      • changedOutput schema / properties / refinements / description
        Previous value: -"Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow"New value: +"Exact mood/style facet values available for this query; counts = how many of the current matches carry each value. mood and style are exact filters (both together keep only their intersection), so a small count means a small result set — rephrase the query instead."
      • addedOutput schema / properties / refinements / properties / counts
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mood": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "style": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "mood",
        +    "style"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / refinements / required
        Previous value: -[
        -  "mood",
        -  "style"
        -]New value: +[
        +  "mood",
        +  "style",
        +  "counts"
        +]
    • Addedsend_feedback
    • Changedupscale_image1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "image": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "id": {
        -            "description": "Edited image id — pass it to download_image or as an image reference",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "id",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "completed",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "image",
        -      "credits_charged"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "credits_charged": {
        -        "type": "number"
        -      },
        -      "job_id": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "pending",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "job_id",
        -      "status",
        -      "credits_charged",
        -      "message"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "message"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "image": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "dimensions": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "height": {
        +                    "type": "number"
        +                  },
        +                  "width": {
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "width",
        +                  "height"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Output pixel size; null when the file could not be probed"
        +          },
        +          "id": {
        +            "description": "Edited image id — pass it to get_image (preview), download_image, or as an image reference",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "url",
        +          "dimensions"
        +        ],
        +        "type": "object"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "completed",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "image",
        +      "credits_charged"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "credits_charged": {
        +        "type": "number"
        +      },
        +      "job_id": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "pending",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "job_id",
        +      "status",
        +      "credits_charged",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 1 tool update
    • Changedcreate_video1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Video model id from list_models (default: Veo 3.1 Fast)"New value: +"Video model id from list_models (default: MiniMax H3)"
  3. 1 tool update
    • Changedget_account1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "balance": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "free": {
        -            "type": "number"
        -          },
        -          "purchased": {
        -            "type": "number"
        -          },
        -          "subscription": {
        -            "type": "number"
        -          },
        -          "total": {
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "total",
        -          "free",
        -          "subscription",
        -          "purchased"
        -        ],
        -        "type": "object"
        -      },
        -      "formats": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "is_entitled": {
        -        "type": "boolean"
        -      },
        -      "max_download_multiplier": {
        -        "type": "number"
        -      },
        -      "next_reset": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "free": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "subscription": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          }
        -        },
        -        "required": [
        -          "free",
        -          "subscription"
        -        ],
        -        "type": "object"
        -      },
        -      "plan": {
        -        "type": "string"
        -      },
        -      "tier": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "upgrade_url": {
        -        "type": "string"
        -      },
        -      "user_id": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "user_id",
        -      "plan",
        -      "tier",
        -      "is_entitled",
        -      "balance",
        -      "next_reset",
        -      "max_download_multiplier",
        -      "formats",
        -      "upgrade_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "message": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "message"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "balance": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "free": {
        +            "type": "number"
        +          },
        +          "purchased": {
        +            "type": "number"
        +          },
        +          "subscription": {
        +            "type": "number"
        +          },
        +          "total": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "total",
        +          "free",
        +          "subscription",
        +          "purchased"
        +        ],
        +        "type": "object"
        +      },
        +      "formats": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "is_entitled": {
        +        "type": "boolean"
        +      },
        +      "max_download_multiplier": {
        +        "type": "number"
        +      },
        +      "next_reset": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "free": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "subscription": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "free",
        +          "subscription"
        +        ],
        +        "type": "object"
        +      },
        +      "plan": {
        +        "type": "string"
        +      },
        +      "tier": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "upgrade_url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "plan",
        +      "tier",
        +      "is_entitled",
        +      "balance",
        +      "next_reset",
        +      "max_download_multiplier",
        +      "formats",
        +      "upgrade_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  }
        +]
  4. 12 tool updates
    • First observedcreate_video
    • First observeddownload_image
    • First observedfind_similar_images
    • First observedgenerate_image
    • First observedget_account
    • First observedget_image
    • First observedget_job
    • First observedget_license_info
    • First observedlist_models
    • First observedresize_image
    • First observedsearch_images
    • First observedupscale_image

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Federated, license-verified search across open-access museum collections — currently The Met, Cleveland, AIC, Wikimedia Commons, and Europeana, with more being added. Strict-default-deny rights gate accepts only CC0 / Public Domain Mark, returning reuse-safe artwork with citations in three styles.
    5
    149 npm
    14
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query the largest CC0 database for provenance, license verification, and market data, and generate CC0 images, all via pay-per-call x402 micropayments.
    -
  • A
    license
    A
    quality
    B
    maintenance
    License-first federated image search for AI agents and humans. Exposes MCP tools for concise, attribution-aware image discovery, license probing, and guarded downloads across open, platform, and editorial sources.
    7
    16 npm
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources