StockCake

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

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
97%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_license_info' description lacks action verbin get_license_info

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~8,251Tokens (tool definitions)
~7.4 KBTypical response size
Significant attention impact (6.45% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "stockcake": {
      "url": "https://stockcake.com/api/mcp"
    }
  }
}

Remote endpoints

https://stockcake.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_images(query, orientation, type, color, mood, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "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."
    },
    "orientation": {
      "type": "string",
      "enum": [
        "landscape",
        "portrait",
        "square"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "photos",
        "illustrations",
        "digital-art",
        "3d"
      ]
    },
    "color": {
      "description": "Dominant color, e.g. a hex value like #ff0000",
      "type": "string",
      "maxLength": 30
    },
    "mood": {
      "description": "Exact facet value — pick one from refinements.mood of a previous search_images result",
      "type": "string",
      "maxLength": 50
    },
    "style": {
      "description": "Exact facet value — pick one from refinements.style of a previous search_images result",
      "type": "string",
      "maxLength": 50
    },
    "page": {
      "description": "Page number, 1-5",
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "limit": {
      "description": "Results to return, 1-12 (default 12). Ask for fewer to save tokens.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "locale": {
      "description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
      "type": "string",
      "enum": [
        "en",
        "de",
        "es",
        "fa",
        "fr",
        "it",
        "ja",
        "pt"
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "query",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "preview_url": {
            "type": "string"
          },
          "page_url": {
            "type": "string"
          },
          "aspect_ratio": {
            "type": "string",
            "description": "e.g. \"16:9\", \"9:16\", \"1:1\""
          },
          "dimensions": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "width": {
                    "type": "number"
                  },
                  "height": {
                    "type": "number"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Full-resolution pixel size; null when unknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "preview_url",
          "page_url",
          "aspect_ratio",
          "dimensions",
          "tags"
        ],
        "additionalProperties": false
      }
    },
    "page": {
      "type": "number"
    },
    "total_results": {
      "type": "number"
    },
    "total_pages": {
      "type": "number"
    },
    "has_more": {
      "type": "boolean"
    },
    "license_note": {
      "type": "string"
    },
    "refinements": {
      "description": "Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow",
      "type": "object",
      "properties": {
        "mood": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "style": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "mood",
        "style"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "results",
    "page",
    "total_results",
    "total_pages",
    "has_more",
    "license_note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢find_similar_images(id, page, limit, locale, context, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric image id from a previous result"
    },
    "page": {
      "description": "Page number, 1-5",
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "limit": {
      "description": "Results to return, 1-12 (default 12). Ask for fewer to save tokens.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "locale": {
      "description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
      "type": "string",
      "enum": [
        "en",
        "de",
        "es",
        "fa",
        "fr",
        "it",
        "ja",
        "pt"
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "id",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "preview_url": {
            "type": "string"
          },
          "page_url": {
            "type": "string"
          },
          "aspect_ratio": {
            "type": "string",
            "description": "e.g. \"16:9\", \"9:16\", \"1:1\""
          },
          "dimensions": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "width": {
                    "type": "number"
                  },
                  "height": {
                    "type": "number"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Full-resolution pixel size; null when unknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "preview_url",
          "page_url",
          "aspect_ratio",
          "dimensions",
          "tags"
        ],
        "additionalProperties": false
      }
    },
    "page": {
      "type": "number"
    },
    "total_results": {
      "type": "number"
    },
    "total_pages": {
      "type": "number"
    },
    "has_more": {
      "type": "boolean"
    },
    "license_note": {
      "type": "string"
    },
    "refinements": {
      "description": "Exact mood/style facet values available for this query — pass one back as `mood` / `style` to narrow",
      "type": "object",
      "properties": {
        "mood": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "style": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "mood",
        "style"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "results",
    "page",
    "total_results",
    "total_pages",
    "has_more",
    "license_note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_image(id, include_preview, locale, context, llm_model, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 2147483647
        },
        {
          "type": "string",
          "minLength": 4,
          "maxLength": 64
        }
      ],
      "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"
    },
    "locale": {
      "description": "Site locale for the user (default en). Titles and page links are localized; descriptions are English.",
      "type": "string",
      "enum": [
        "en",
        "de",
        "es",
        "fa",
        "fr",
        "it",
        "ja",
        "pt"
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "id",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "number"
    },
    "title": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "dimensions": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "width": {
              "type": "number"
            },
            "height": {
              "type": "number"
            }
          },
          "required": [
            "width",
            "height"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Full-resolution pixel size; null when unknown"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "ai_generated": {
          "type": "boolean",
          "const": true
        },
        "prompt": {
          "type": [
            "string",
            "null"
          ]
        },
        "style": {
          "type": [
            "string",
            "null"
          ]
        },
        "generated_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "published_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "descriptive_attributes": {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "ai_generated",
        "prompt",
        "style",
        "generated_at",
        "published_at",
        "descriptive_attributes"
      ],
      "additionalProperties": false
    },
    "license": {
      "type": "object",
      "properties": {
        "license": {
          "type": "string"
        },
        "license_url": {
          "type": "string"
        },
        "public_domain": {
          "type": "boolean"
        },
        "commercial_use": {
          "type": "boolean"
        },
        "attribution_required": {
          "type": "boolean"
        },
        "restrictions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "license",
        "license_url",
        "public_domain",
        "commercial_use",
        "attribution_required",
        "restrictions"
      ],
      "additionalProperties": false
    },
    "page_url": {
      "type": "string"
    },
    "preview_url": {
      "type": "string"
    },
    "attribution": {
      "type": "object",
      "properties": {
        "markdown": {
          "type": "string"
        },
        "html": {
          "type": "string"
        },
        "plain": {
          "type": "string"
        }
      },
      "required": [
        "markdown",
        "html",
        "plain"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "id",
    "title",
    "description",
    "dimensions",
    "tags",
    "provenance",
    "license",
    "page_url",
    "preview_url",
    "attribution"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_license_info(context, llm_model, conversation_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_account(context, llm_model, conversation_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "plan": {
          "type": "string"
        },
        "tier": {
          "type": [
            "string",
            "null"
          ]
        },
        "is_entitled": {
          "type": "boolean"
        },
        "balance": {
          "type": "object",
          "properties": {
            "total": {
              "type": "number"
            },
            "free": {
              "type": "number"
            },
            "subscription": {
              "type": "number"
            },
            "purchased": {
              "type": "number"
            }
          },
          "required": [
            "total",
            "free",
            "subscription",
            "purchased"
          ],
          "additionalProperties": false
        },
        "next_reset": {
          "type": "object",
          "properties": {
            "free": {
              "type": [
                "string",
                "null"
              ]
            },
            "subscription": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "free",
            "subscription"
          ],
          "additionalProperties": false
        },
        "max_download_multiplier": {
          "type": "number"
        },
        "formats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "upgrade_url": {
          "type": "string"
        }
      },
      "required": [
        "plan",
        "tier",
        "is_entitled",
        "balance",
        "next_reset",
        "max_download_multiplier",
        "formats",
        "upgrade_url"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟢list_models(kind, context, llm_model, conversation_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "description": "Return only one catalog",
      "type": "string",
      "enum": [
        "image",
        "video"
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "image": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "default": {
                "type": "boolean"
              },
              "free": {
                "type": "boolean"
              },
              "default_tier": {
                "type": "string"
              },
              "tiers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "credits": {
                      "type": "number"
                    },
                    "resolution": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "label",
                    "credits"
                  ],
                  "additionalProperties": false
                }
              },
              "supports_references": {
                "type": "boolean"
              },
              "max_references": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "name",
              "provider",
              "description",
              "default",
              "free",
              "default_tier",
              "tiers",
              "supports_references",
              "max_references"
            ],
            "additionalProperties": false
          }
        },
        "video": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "default": {
                "type": "boolean"
              },
              "default_tier": {
                "type": "string"
              },
              "tiers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "resolution": {
                      "type": "string"
                    },
                    "audio": {
                      "type": "boolean"
                    },
                    "credits_per_second": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "key",
                    "resolution",
                    "audio",
                    "credits_per_second"
                  ],
                  "additionalProperties": false
                }
              },
              "durations": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "default_duration": {
                "type": "number"
              },
              "image_to_video": {
                "type": "boolean"
              },
              "aspect_ratios": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "name",
              "provider",
              "description",
              "default",
              "default_tier",
              "tiers",
              "durations",
              "default_duration",
              "image_to_video",
              "aspect_ratios"
            ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟢generate_image(prompt, model, tier, aspect_ratio, reference_images, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "model": {
      "description": "Model id from list_models. Default: the site default for subscribers, the free model otherwise.",
      "type": "string",
      "maxLength": 64
    },
    "tier": {
      "description": "Tier key from list_models (e.g. 1k, 2k, standard). Default: the model's default tier.",
      "type": "string",
      "maxLength": 16
    },
    "aspect_ratio": {
      "type": "string",
      "enum": [
        "9:16",
        "4:5",
        "3:4",
        "2:3",
        "1:1",
        "3:2",
        "4:3",
        "5:4",
        "16:9"
      ]
    },
    "reference_images": {
      "description": "Stock image ids or your own edited image ids used as references",
      "maxItems": 9,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          }
        ],
        "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."
      }
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "prompt",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "completed"
        },
        "image": {
          "type": "object",
          "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"
          ],
          "additionalProperties": false
        },
        "credits_charged": {
          "type": "number"
        }
      },
      "required": [
        "job_id",
        "status",
        "image",
        "credits_charged"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "pending"
        },
        "credits_charged": {
          "type": "number"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "job_id",
        "status",
        "credits_charged",
        "message"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟢upscale_image(image, scale, context, llm_model, conversation_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "image": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        }
      ],
      "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."
    },
    "scale": {
      "anyOf": [
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 8
        }
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "image",
    "scale",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "completed"
        },
        "image": {
          "type": "object",
          "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"
          ],
          "additionalProperties": false
        },
        "credits_charged": {
          "type": "number"
        }
      },
      "required": [
        "job_id",
        "status",
        "image",
        "credits_charged"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "pending"
        },
        "credits_charged": {
          "type": "number"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "job_id",
        "status",
        "credits_charged",
        "message"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟡resize_image(image, aspect_ratio, prompt, context, llm_model, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "image": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        }
      ],
      "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."
    },
    "aspect_ratio": {
      "type": "string",
      "enum": [
        "9:16",
        "4:5",
        "3:4",
        "2:3",
        "1:1",
        "3:2",
        "4:3",
        "5:4",
        "16:9"
      ],
      "description": "Target ratio"
    },
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "What should fill the extended canvas, e.g. 'extend the sandy beach and sky; keep the subject unchanged, do not crop or stretch'"
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "image",
    "aspect_ratio",
    "prompt",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "completed"
        },
        "image": {
          "type": "object",
          "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"
          ],
          "additionalProperties": false
        },
        "credits_charged": {
          "type": "number"
        }
      },
      "required": [
        "job_id",
        "status",
        "image",
        "credits_charged"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "pending"
        },
        "credits_charged": {
          "type": "number"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "job_id",
        "status",
        "credits_charged",
        "message"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟡create_video(prompt, model, tier, duration_seconds, aspect_ratio, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "description": "Required unless start_image is given",
      "type": "string",
      "maxLength": 2000
    },
    "model": {
      "description": "Video model id from list_models (default: Veo 3.1 Fast)",
      "type": "string",
      "maxLength": 64
    },
    "tier": {
      "description": "Tier key from list_models (e.g. 720p, 1080p, 720p-audio)",
      "type": "string",
      "maxLength": 24
    },
    "duration_seconds": {
      "description": "Clip length; must be one of the model's durations",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "aspect_ratio": {
      "description": "Text-to-video only; a start image sets the ratio",
      "type": "string",
      "enum": [
        "9:16",
        "4:5",
        "3:4",
        "2:3",
        "1:1",
        "3:2",
        "4:3",
        "5:4",
        "16:9"
      ]
    },
    "start_image": {
      "description": "Animate from this image (stock id or your edited image id)",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        }
      ]
    },
    "negative_prompt": {
      "type": "string",
      "maxLength": 1000
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "completed"
        },
        "video": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string"
            },
            "duration_seconds": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "url",
            "duration_seconds"
          ],
          "additionalProperties": false
        },
        "credits_charged": {
          "type": "number"
        }
      },
      "required": [
        "job_id",
        "status",
        "video",
        "credits_charged"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "const": "pending"
        },
        "credits_charged": {
          "type": "number"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "job_id",
        "status",
        "credits_charged",
        "message"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟢download_image(id, format, context, llm_model, conversation_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Stock image id or your own edited image id"
    },
    "format": {
      "description": "Default jpg (the original)",
      "type": "string",
      "enum": [
        "jpg",
        "png"
      ]
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "id",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "dimensions": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "width": {
                  "type": "number"
                },
                "height": {
                  "type": "number"
                }
              },
              "required": [
                "width",
                "height"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "license": {
          "type": "object",
          "properties": {
            "license": {
              "type": "string"
            },
            "license_url": {
              "type": "string"
            },
            "public_domain": {
              "type": "boolean"
            },
            "commercial_use": {
              "type": "boolean"
            },
            "attribution_required": {
              "type": "boolean"
            },
            "restrictions": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "license",
            "license_url",
            "public_domain",
            "commercial_use",
            "attribution_required",
            "restrictions"
          ],
          "additionalProperties": false
        },
        "page_url": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "url",
        "format",
        "dimensions",
        "license",
        "page_url"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}
🟢get_job(job_id, context, llm_model, conversation_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 8,
      "maxLength": 64
    },
    "context": {
      "type": "string",
      "description": "In one sentence, what is the user trying to make or find?"
    },
    "llm_model": {
      "type": "string",
      "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."
    },
    "conversation_id": {
      "type": "string",
      "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."
    }
  },
  "required": [
    "job_id",
    "context",
    "llm_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "completed",
            "error"
          ]
        },
        "result": {
          "type": "object",
          "properties": {
            "image_url": {
              "type": "string"
            },
            "video_url": {
              "type": "string"
            },
            "edited_image_id": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "error": {
          "type": "object",
          "properties": {
            "message": {
              "type": "string"
            },
            "refunded": {
              "type": "boolean"
            },
            "code": {
              "type": "string"
            }
          },
          "required": [
            "message",
            "refunded"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "job_id",
        "status"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools