Server definition
- Hash
- sha256:9e86610012bea4abc9f047bc7834ff63acdf0f1b2f5fef18deb803086ddb8fc7
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": "StockCake: CC0 / public-domain stock images, every one AI-generated. Free for commercial use, no attribution required.\nTo show an image to the user, call get_image — it returns an inline image block (preview_url may not render in every client).\nAlways give the user the page_url when you recommend an image; full-resolution downloads happen on that page and need a free StockCake account.\nSearch: keep `query` short — 2–5 words, the subject plus one or two qualifiers ('red vintage rocket'), not a sentence.\nIf total_results is low or the matches miss, retry with FEWER keywords first, then with different phrasing (synonyms, singular/plural, a broader subject) — try 2–3 variations before telling the user nothing fits.\nUse `limit` to request only as many results as you need.\nFor `mood` / `style`, pass exact values from `refinements` of a previous search_images result.\nPass `locale` for non-English users (titles and links are localized; descriptions are English).\nThe endpoint allows 120 requests per minute per IP.\nAccount tools (generate, upscale, resize, video, download, account) need a free StockCake account — the host will prompt to sign in.",
"tools": [
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"aspect_ratio": {
"description": "Text-to-video only; a start image sets the ratio",
"enum": [
"9:16",
"4:5",
"3:4",
"2:3",
"1:1",
"3:2",
"4:3",
"5:4",
"16:9"
],
"type": "string"
},
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"duration_seconds": {
"description": "Clip length; must be one of the model's durations",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"model": {
"description": "Video model id from list_models (default: MiniMax H3)",
"maxLength": 64,
"type": "string"
},
"negative_prompt": {
"maxLength": 1000,
"type": "string"
},
"prompt": {
"description": "Required unless start_image is given",
"maxLength": 2000,
"type": "string"
},
"start_image": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
{
"maxLength": 64,
"minLength": 1,
"type": "string"
}
],
"description": "Animate from this image (stock id or your edited image id)"
},
"tier": {
"description": "Tier key from list_models (e.g. 720p, 1080p, 720p-audio)",
"maxLength": 24,
"type": "string"
}
},
"required": [
"context",
"llm_model"
],
"type": "object"
},
"name": "create_video",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"additionalProperties": false,
"properties": {
"credits_charged": {
"type": "number"
},
"job_id": {
"type": "string"
},
"status": {
"const": "completed",
"type": "string"
},
"video": {
"additionalProperties": false,
"properties": {
"duration_seconds": {
"type": [
"number",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"url",
"duration_seconds"
],
"type": "object"
}
},
"required": [
"job_id",
"status",
"video",
"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"
}
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"format": {
"description": "Default jpg (the original)",
"enum": [
"jpg",
"png"
],
"type": "string"
},
"id": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
{
"pattern": "^\\d+$",
"type": "string"
}
],
"description": "Stock image id or your own edited image id"
},
"llm_model": {
"description": "The 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.",
"type": "string"
}
},
"required": [
"id",
"context",
"llm_model"
],
"type": "object"
},
"name": "download_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"additionalProperties": false,
"properties": {
"dimensions": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"type": "number"
},
"width": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
{
"type": "null"
}
]
},
"format": {
"type": "string"
},
"id": {
"type": "number"
},
"license": {
"additionalProperties": false,
"properties": {
"attribution_required": {
"type": "boolean"
},
"commercial_use": {
"type": "boolean"
},
"license": {
"type": "string"
},
"license_url": {
"type": "string"
},
"public_domain": {
"type": "boolean"
},
"restrictions": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"license",
"license_url",
"public_domain",
"commercial_use",
"attribution_required",
"restrictions"
],
"type": "object"
},
"page_url": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url",
"format",
"dimensions",
"license",
"page_url"
],
"type": "object"
},
{
"additionalProperties": {},
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"id": {
"description": "Numeric image id from a previous result",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"limit": {
"description": "Results to return, 1-12 (default 12). Ask for fewer to save tokens.",
"maximum": 12,
"minimum": 1,
"type": "integer"
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"locale": {
"description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
"enum": [
"en",
"de",
"es",
"fa",
"fr",
"it",
"ja",
"pt"
],
"type": "string"
},
"page": {
"description": "Page number, 1-5",
"maximum": 5,
"minimum": 1,
"type": "integer"
}
},
"required": [
"id",
"context",
"llm_model"
],
"type": "object"
},
"name": "find_similar_images",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"license_note": {
"type": "string"
},
"page": {
"type": "number"
},
"refinements": {
"additionalProperties": false,
"description": "Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow",
"properties": {
"mood": {
"items": {
"type": "string"
},
"type": "array"
},
"style": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"mood",
"style"
],
"type": "object"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"aspect_ratio": {
"description": "e.g. \"16:9\", \"9:16\", \"1:1\"",
"type": "string"
},
"description": {
"type": "string"
},
"dimensions": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"type": "number"
},
"width": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Full-resolution pixel size; null when unknown"
},
"id": {
"type": "number"
},
"page_url": {
"type": "string"
},
"preview_url": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"preview_url",
"page_url",
"aspect_ratio",
"dimensions",
"tags"
],
"type": "object"
},
"type": "array"
},
"total_pages": {
"type": "number"
},
"total_results": {
"type": "number"
}
},
"required": [
"results",
"page",
"total_results",
"total_pages",
"has_more",
"license_note"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"aspect_ratio": {
"enum": [
"9:16",
"4:5",
"3:4",
"2:3",
"1:1",
"3:2",
"4:3",
"5:4",
"16:9"
],
"type": "string"
},
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"model": {
"description": "Model id from list_models. Default: the site default for subscribers, the free model otherwise.",
"maxLength": 64,
"type": "string"
},
"prompt": {
"maxLength": 2000,
"minLength": 1,
"type": "string"
},
"reference_images": {
"description": "Stock image ids or your own edited image ids used as references",
"items": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
{
"maxLength": 64,
"minLength": 1,
"type": "string"
}
],
"description": "A StockCake image id (from search_images), one of your own edited image ids (from a previous result), or a job_id. Never a URL."
},
"maxItems": 9,
"type": "array"
},
"tier": {
"description": "Tier key from list_models (e.g. 1k, 2k, standard). Default: the model's default tier.",
"maxLength": 16,
"type": "string"
}
},
"required": [
"prompt",
"context",
"llm_model"
],
"type": "object"
},
"name": "generate_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"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"
}
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"llm_model": {
"description": "The 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.",
"type": "string"
}
},
"required": [
"context",
"llm_model"
],
"type": "object"
},
"name": "get_account",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"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"
}
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"id": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 2147483647,
"type": "integer"
},
{
"maxLength": 64,
"minLength": 4,
"type": "string"
}
],
"description": "Numeric image id (from search results) or the image's CDN uuid"
},
"include_preview": {
"description": "Default true. Set false to skip the inline preview image and save tokens.",
"type": "boolean"
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"locale": {
"description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
"enum": [
"en",
"de",
"es",
"fa",
"fr",
"it",
"ja",
"pt"
],
"type": "string"
}
},
"required": [
"id",
"context",
"llm_model"
],
"type": "object"
},
"name": "get_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": false,
"properties": {
"html": {
"type": "string"
},
"markdown": {
"type": "string"
},
"plain": {
"type": "string"
}
},
"required": [
"markdown",
"html",
"plain"
],
"type": "object"
},
"description": {
"type": [
"string",
"null"
]
},
"dimensions": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"type": "number"
},
"width": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Full-resolution pixel size; null when unknown"
},
"id": {
"type": "number"
},
"license": {
"additionalProperties": false,
"properties": {
"attribution_required": {
"type": "boolean"
},
"commercial_use": {
"type": "boolean"
},
"license": {
"type": "string"
},
"license_url": {
"type": "string"
},
"public_domain": {
"type": "boolean"
},
"restrictions": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"license",
"license_url",
"public_domain",
"commercial_use",
"attribution_required",
"restrictions"
],
"type": "object"
},
"page_url": {
"type": "string"
},
"preview_url": {
"type": "string"
},
"provenance": {
"additionalProperties": false,
"properties": {
"ai_generated": {
"const": true,
"type": "boolean"
},
"descriptive_attributes": {
"anyOf": [
{
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
]
},
"generated_at": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": [
"string",
"null"
]
},
"published_at": {
"type": [
"string",
"null"
]
},
"style": {
"type": [
"string",
"null"
]
}
},
"required": [
"ai_generated",
"prompt",
"style",
"generated_at",
"published_at",
"descriptive_attributes"
],
"type": "object"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"description",
"dimensions",
"tags",
"provenance",
"license",
"page_url",
"preview_url",
"attribution"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"job_id": {
"maxLength": 64,
"minLength": 8,
"type": "string"
},
"llm_model": {
"description": "The 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.",
"type": "string"
}
},
"required": [
"job_id",
"context",
"llm_model"
],
"type": "object"
},
"name": "get_job",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"additionalProperties": false,
"properties": {
"error": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"refunded": {
"type": "boolean"
}
},
"required": [
"message",
"refunded"
],
"type": "object"
},
"job_id": {
"type": "string"
},
"result": {
"additionalProperties": false,
"properties": {
"edited_image_id": {
"type": "number"
},
"image_url": {
"type": "string"
},
"video_url": {
"type": "string"
}
},
"type": "object"
},
"status": {
"enum": [
"pending",
"completed",
"error"
],
"type": "string"
}
},
"required": [
"job_id",
"status"
],
"type": "object"
},
{
"additionalProperties": {},
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
],
"type": "object"
}
},
{
"description": "License and usage terms for all StockCake images (site-wide CC0 / public domain).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"llm_model": {
"description": "The 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.",
"type": "string"
}
},
"required": [
"context",
"llm_model"
],
"type": "object"
},
"name": "get_license_info",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"kind": {
"description": "Return only one catalog",
"enum": [
"image",
"video"
],
"type": "string"
},
"llm_model": {
"description": "The 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.",
"type": "string"
}
},
"required": [
"context",
"llm_model"
],
"type": "object"
},
"name": "list_models",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"additionalProperties": false,
"properties": {
"image": {
"items": {
"additionalProperties": false,
"properties": {
"default": {
"type": "boolean"
},
"default_tier": {
"type": "string"
},
"description": {
"type": "string"
},
"free": {
"type": "boolean"
},
"id": {
"type": "string"
},
"max_references": {
"type": "number"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"supports_references": {
"type": "boolean"
},
"tiers": {
"items": {
"additionalProperties": false,
"properties": {
"credits": {
"type": "number"
},
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"resolution": {
"type": "string"
}
},
"required": [
"key",
"label",
"credits"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"id",
"name",
"provider",
"description",
"default",
"free",
"default_tier",
"tiers",
"supports_references",
"max_references"
],
"type": "object"
},
"type": "array"
},
"video": {
"items": {
"additionalProperties": false,
"properties": {
"aspect_ratios": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"default": {
"type": "boolean"
},
"default_duration": {
"type": "number"
},
"default_tier": {
"type": "string"
},
"description": {
"type": "string"
},
"durations": {
"items": {
"type": "number"
},
"type": "array"
},
"id": {
"type": "string"
},
"image_to_video": {
"type": "boolean"
},
"name": {
"type": "string"
},
"provider": {
"type": "string"
},
"tiers": {
"items": {
"additionalProperties": false,
"properties": {
"audio": {
"type": "boolean"
},
"credits_per_second": {
"type": "number"
},
"key": {
"type": "string"
},
"resolution": {
"type": "string"
}
},
"required": [
"key",
"resolution",
"audio",
"credits_per_second"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"id",
"name",
"provider",
"description",
"default",
"default_tier",
"tiers",
"durations",
"default_duration",
"image_to_video",
"aspect_ratios"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
{
"additionalProperties": {},
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
],
"type": "object"
}
},
{
"description": "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. 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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"aspect_ratio": {
"description": "Target ratio",
"enum": [
"9:16",
"4:5",
"3:4",
"2:3",
"1:1",
"3:2",
"4:3",
"5:4",
"16:9"
],
"type": "string"
},
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"image": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
{
"maxLength": 64,
"minLength": 1,
"type": "string"
}
],
"description": "A StockCake image id (from search_images), one of your own edited image ids (from a previous result), or a job_id. Never a URL."
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"prompt": {
"description": "What should fill the extended canvas, e.g. 'extend the sandy beach and sky; keep the subject unchanged, do not crop or stretch'",
"maxLength": 2000,
"minLength": 1,
"type": "string"
}
},
"required": [
"image",
"aspect_ratio",
"prompt",
"context",
"llm_model"
],
"type": "object"
},
"name": "resize_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"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"
}
],
"type": "object"
}
},
{
"description": "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 available for this query. Start with a short query; when total_results is small or off-target, retry with fewer keywords or different phrasing.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"color": {
"description": "Dominant color, e.g. a hex value like #ff0000",
"maxLength": 30,
"type": "string"
},
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"limit": {
"description": "Results to return, 1-12 (default 12). Ask for fewer to save tokens.",
"maximum": 12,
"minimum": 1,
"type": "integer"
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"locale": {
"description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
"enum": [
"en",
"de",
"es",
"fa",
"fr",
"it",
"ja",
"pt"
],
"type": "string"
},
"mood": {
"description": "Exact facet value — pick one from refinements.mood of a previous search_images result",
"maxLength": 50,
"type": "string"
},
"orientation": {
"enum": [
"landscape",
"portrait",
"square"
],
"type": "string"
},
"page": {
"description": "Page number, 1-5",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Short 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.",
"maxLength": 300,
"minLength": 1,
"type": "string"
},
"style": {
"description": "Exact facet value — pick one from refinements.style of a previous search_images result",
"maxLength": 50,
"type": "string"
},
"type": {
"enum": [
"photos",
"illustrations",
"digital-art",
"3d"
],
"type": "string"
}
},
"required": [
"query",
"context",
"llm_model"
],
"type": "object"
},
"name": "search_images",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"license_note": {
"type": "string"
},
"page": {
"type": "number"
},
"refinements": {
"additionalProperties": false,
"description": "Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow",
"properties": {
"mood": {
"items": {
"type": "string"
},
"type": "array"
},
"style": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"mood",
"style"
],
"type": "object"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"aspect_ratio": {
"description": "e.g. \"16:9\", \"9:16\", \"1:1\"",
"type": "string"
},
"description": {
"type": "string"
},
"dimensions": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"type": "number"
},
"width": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Full-resolution pixel size; null when unknown"
},
"id": {
"type": "number"
},
"page_url": {
"type": "string"
},
"preview_url": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"preview_url",
"page_url",
"aspect_ratio",
"dimensions",
"tags"
],
"type": "object"
},
"type": "array"
},
"total_pages": {
"type": "number"
},
"total_results": {
"type": "number"
}
},
"required": [
"results",
"page",
"total_results",
"total_pages",
"has_more",
"license_note"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"context": {
"description": "In one sentence, what is the user trying to make or find?",
"type": "string"
},
"conversation_id": {
"description": "Pass 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.",
"type": "string"
},
"image": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
{
"maxLength": 64,
"minLength": 1,
"type": "string"
}
],
"description": "A StockCake image id (from search_images), one of your own edited image ids (from a previous result), or a job_id. Never a URL."
},
"llm_model": {
"description": "The 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.",
"type": "string"
},
"scale": {
"anyOf": [
{
"const": 2,
"type": "number"
},
{
"const": 4,
"type": "number"
},
{
"const": 8,
"type": "number"
}
]
}
},
"required": [
"image",
"scale",
"context",
"llm_model"
],
"type": "object"
},
"name": "upscale_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"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"
}
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:9e86610012bea4abc9f047bc7834ff63acdf0f1b2f5fef18deb803086ddb8fc7 | sha256sum