Koskamo

Product Aura MCP

An official MCP server that allows AI assistants to generate platform-ready listing and ad images for Amazon, Etsy, Shopify, TikTok Shop, and social media from a single product photo. It supports planning shots, generating images, editing via text, checking marketplace compliance, and managing products and brand kits.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Product Aura MCP logo, by Product AuraVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Product Aura
You need:Sign in with your Product Aura account
MCP endpoint (Streamable HTTP)
https://productaura.co/api/mcp
Vendor documentation

What its tools do

34 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

34 of 34 have a description · 34 of 34 declare behavior hints · 5 of 29 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to productaura.co ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Generate Amazon, Etsy, or Shopify listing image sets from one photo
  • Create social media ad creatives (feed and story formats)
  • Edit product images using natural language instructions
  • Check generated images against marketplace compliance rules

Source and maintenance

Vendor evidenceRegistry 0.1.2
Maintenance checked

Protocol and capabilities

Server
Product Aura 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
34 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Product Aura turns one product photo into a complete, platform-ready set of listing and ad images for Amazon, Etsy, Shopify, TikTok Shop and social ads. Typical flow: list_packs (free) → create_product with the product photo (free, analyses it) → optionally answer_facts with the missingFacts the person knows (free; real dimensions and specs sell better, and we never invent numbers) → for shopify, store_look once per store (free; backdrop, light, image shape) → optionally save_brand_kit once per brand, e.g. from its website (free; colours, fonts, logo for text and designed images) → plan_image_set (free, shows shots and credit cost) → generate_image_set (spends credits) → get_image_set until done (returns previews and download links) → edit_image or regenerate_image for any image to improve → rate_image. 1 credit = one 2K image. Tell the person the credit cost before generating. When credits run out, buy_credits returns a payment link the person opens.

Tools

34 advertised

list_packs — List platform packs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the platform packs (Amazon, A+, Etsy, Shopify, social ads) with their shots, credit cost per shot, the recipes per pack (shot or module lists per product type), the supported languages for text on images, and the prices: plans monthly or yearly (20% off, a year of credits up front) with their credits, brand kits and credit-pack discount, and one-time credit packs (valid 24 months). Free; no account needed.

list_packs input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_packs annotations
{
  "title": "List platform packs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_credit_balance — Get credit balance
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the account e-mail and credit balance. 1 credit = one 2K image. Free.

get_credit_balance input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_credit_balance annotations
{
  "title": "Get credit balance",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_product — Create a product from photos or a product page
Advertised by the server during the last successful anonymous check.

Creates a product from one or more photos (base64 JPG, PNG or WebP, up to 15 MB each; extra photos from other angles make the images more accurate) or from a product page link (Amazon, Etsy, Shopify or any shop: its photos and text are used), and analyses it: name, category, materials, colours, selling points, the closest category recipe, facts read from the label, and up to 5 missingFacts (each with a question and an example) to ask the person. Free. Returns the product id for answer_facts and plan_image_set, and analysis: when ok is false, tell the person the problem (e.g. a blurry photo) and offer better photos before planning. Example: {"product_url": "https://example.com/products/mug"}

create_product input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 120,
      "description": "Product name, if the person gave one"
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "description": "What the person says about the product (guides the analysis)"
    },
    "product_url": {
      "type": "string",
      "maxLength": 2000,
      "description": "A product page link, instead of photos"
    },
    "image_base64": {
      "type": "string",
      "minLength": 100,
      "description": "The main photo, base64-encoded (a data: URL prefix is fine)"
    },
    "extra_images_base64": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 100
      },
      "maxItems": 5,
      "description": "More photos of the same product from other angles"
    }
  }
}
create_product annotations
{
  "title": "Create a product from photos or a product page",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
answer_facts — Answer missing product facts
Advertised by the server during the last successful anonymous check.

Saves product facts the person knows, keyed by missingFacts[].key from create_product (e.g. dimensions, pack-count, key-ingredients), or corrects a fact read from the label. Values are printed word for word on the images and reused for every later set; an empty value removes a fact. Never make values up: ask the person, or skip (images are then made without those numbers). Free. Returns the product with updated facts and missingFacts. Example: {"product_id": "…", "facts": {"dimensions": "12 × 8 × 4 in (30.5 × 20.3 × 10.2 cm)"}}

answer_facts input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id",
    "facts"
  ],
  "properties": {
    "facts": {
      "type": "object",
      "description": "Fact key → value exactly as the person gave it (numbers and units unchanged), up to 20",
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z0-9-]{1,40}$"
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 1000
      }
    },
    "product_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
answer_facts annotations
{
  "title": "Answer missing product facts",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_products — List products
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the account’s products (newest first) with their image sets, category recipe, facts and missingFacts. Free.

list_products input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_products annotations
{
  "title": "List products",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_folders — List folders
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns your folders in tree order, each with id, name, parentId and how many products it holds. Free. Use with move_product to organise products by store, platform or client.

list_folders input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_folders annotations
{
  "title": "List folders",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_folder — Create a folder
Advertised by the server during the last successful anonymous check.

Creates a folder, optionally inside another one (parent_id from list_folders). Free. Returns the new folder with its id.

create_folder input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    },
    "parent_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Put the new folder inside this folder"
    }
  }
}
create_folder annotations
{
  "title": "Create a folder",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
move_product — Move a product to a folder
Advertised by the server during the last successful anonymous check.

Puts a product (id from list_products) in a folder (id from list_folders), or takes it out of every folder when folder_id is left out. Free. Image sets stay with the product.

move_product input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "folder_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Target folder; leave out for \"not in a folder\""
    },
    "product_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
move_product annotations
{
  "title": "Move a product to a folder",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
edit_product — Edit what was read from a product
Advertised by the server during the last successful anonymous check.

Changes a product’s name, kind, selling points (up to 5 short lines printed on images), facts (by key from list_products; an empty value removes one) or scene. Only the fields given change; later image sets use them. Free. Returns the product. Example: {"product_id": "…", "features": ["Set of 3", "Leak-proof lids"]}

edit_product input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 120
    },
    "facts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "key",
          "value"
        ],
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "description": "Fact values by key; an empty value removes the fact"
    },
    "setting": {
      "type": "string",
      "maxLength": 120,
      "description": "The scene for lifestyle images"
    },
    "category": {
      "type": "string",
      "maxLength": 60,
      "description": "What kind of product it is, e.g. \"kitchen storage\""
    },
    "features": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 5,
      "description": "Selling points, replacing the current ones"
    },
    "product_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
edit_product annotations
{
  "title": "Edit what was read from a product",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
delete_product — Delete a product
Advertised by the server during the last successful anonymous check.
Advertised destructive

Deletes one product (id from list_products): it and its image sets leave the person’s account. Downloaded images are not affected. Free. Ask the person first. Returns the deleted id.

delete_product input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "product_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
delete_product annotations
{
  "title": "Delete a product",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
store_look — Check or change the store look (Shopify)
Advertised by the server during the last successful anonymous check.

Shows or changes the store look shopify-pack images are made in, so a whole catalogue matches: backdrop colour and type, accent colour, light, image shape, model notes and an optional reference photo from the person’s store. Each brand kit can have its own look (brand_kit_id); a brand without one, and a set without a brand, use the account’s look (own: false says a brand uses it). Call without fields to see it; send only the fields to change. Free. Returns the saved look. Example: {"brand_kit_id": "…", "backdrop_color": "#E8E2DA", "ratio": "4:5"}

store_look input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "faces": {
      "enum": [
        "show",
        "crop"
      ],
      "type": "string",
      "description": "show (default) or crop (never show faces)"
    },
    "light": {
      "enum": [
        "soft-studio",
        "hard-flash",
        "natural-daylight"
      ],
      "type": "string",
      "description": "soft-studio (default), hard-flash or natural-daylight"
    },
    "ratio": {
      "enum": [
        "auto",
        "1:1",
        "4:5",
        "3:4",
        "5:6"
      ],
      "type": "string",
      "description": "auto (default: the product type’s shape: square; 4:5 clothing, home, pet, gifts; 3:4 shoes), or 1:1, 4:5, 3:4 or 5:6 for every image"
    },
    "model_look": {
      "type": "string",
      "maxLength": 200,
      "description": "How models look, e.g. \"women in their 20s, athletic\""
    },
    "skin_tones": {
      "type": "string",
      "maxLength": 200,
      "description": "e.g. \"light, medium and deep\""
    },
    "accent_color": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 7
        },
        {
          "type": "null"
        }
      ],
      "description": "Hex for small props and type; null for none"
    },
    "brand_kit_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "A brand kit from list_brand_kits; leave out for the account’s own look"
    },
    "backdrop_type": {
      "enum": [
        "seamless",
        "textured",
        "scene"
      ],
      "type": "string",
      "description": "seamless (default), textured or scene"
    },
    "backdrop_color": {
      "type": "string",
      "maxLength": 7,
      "description": "Hex, e.g. #EDEDED (default)"
    },
    "remove_reference": {
      "type": "boolean"
    },
    "reference_image_base64": {
      "type": "string",
      "minLength": 100,
      "description": "A photo from the person’s store (JPG, PNG or WebP) to match: backdrop, light, crop"
    }
  }
}
store_look annotations
{
  "title": "Check or change the store look (Shopify)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_brand_kits — List brand kits
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the person’s brand kits, default first: name, website, palette (hex colours, main first), headingFont and bodyFont (Google Fonts names), voice, whether the logo is used, and links to the logo and the typeface sample image. Free. The default kit is used by every new image set unless plan_image_set names another kit or "none".

list_brand_kits input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_brand_kits annotations
{
  "title": "List brand kits",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
save_brand_kit — Create, import or change a brand kit
Advertised by the server during the last successful anonymous check.

Creates a brand kit, or changes one when brand_kit_id is given (only the fields sent change). With website and no brand_kit_id, the brand’s name, colours, fonts and logo are read from the site first; show the person what was found, including the font sample (fontSampleUrl), and save fonts_confirmed true once they say it matches. Brand kits put text in the brand’s fonts (shown to the image model as a typeface sample image) and designed elements in its colours. Free; the number of kits depends on the plan (1 without a plan, Creator 3, Pro 10, Business 50). Returns the saved kit (and, after an import, what was found). Example: {"website": "https://example.com"}

save_brand_kit input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 60
    },
    "voice": {
      "type": "string",
      "maxLength": 200,
      "description": "How the brand sounds, e.g. \"warm, playful, no jargon\""
    },
    "palette": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 7
      },
      "maxItems": 5,
      "description": "Hex colours, main colour first, e.g. [\"#1A1A1A\", \"#E8DCC8\"]; [] removes them"
    },
    "website": {
      "type": "string",
      "maxLength": 300,
      "description": "The brand’s website; on a new kit its brand is read from it"
    },
    "use_logo": {
      "type": "boolean",
      "description": "Put the logo, small, on images with a spot for it (poster, grid)"
    },
    "body_font": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 50
        },
        {
          "type": "null"
        }
      ],
      "description": "Google Fonts family for small text, e.g. \"Inter\""
    },
    "is_default": {
      "type": "boolean",
      "description": "Use this kit for new image sets by default"
    },
    "logo_base64": {
      "type": "string",
      "minLength": 100,
      "description": "The logo (PNG with transparency, JPG, WebP or SVG)"
    },
    "brand_kit_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The kit to change; leave out to create a new one"
    },
    "heading_font": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 50
        },
        {
          "type": "null"
        }
      ],
      "description": "Google Fonts family, e.g. \"Playfair Display\""
    },
    "fonts_confirmed": {
      "type": "boolean",
      "description": "The person checked the fonts and their sample: they match"
    },
    "font_sample_base64": {
      "type": "string",
      "minLength": 100,
      "description": "A picture of a paragraph set in the brand’s font, for fonts not on Google Fonts"
    }
  }
}
save_brand_kit annotations
{
  "title": "Create, import or change a brand kit",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
delete_brand_kit — Delete a brand kit
Advertised by the server during the last successful anonymous check.
Advertised destructive

Deletes one brand kit (id from list_brand_kits). Image sets made with it keep their images. Free. Ask the person first.

delete_brand_kit input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "brand_kit_id"
  ],
  "properties": {
    "brand_kit_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
delete_brand_kit annotations
{
  "title": "Delete a brand kit",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
plan_image_set — Plan an image set
Advertised by the server during the last successful anonymous check.

Creates an image set for a product and platform pack and returns its shot plan, written for this product (takes up to a minute): each shot with what it will show, why it sells and its credit cost; shots that do not fit the product (unfit says why) are left out of the default shots. Also the current balance and the pack’s missingFacts. Every pack but social follows the product’s recipe for that pack (shopify also uses the store look, see store_look; amazon-aplus takes aplus_format and aplus_text); shots listing withoutFacts are made without numbers (answer_facts first to add them), and plan.note says so. Free; nothing is generated yet. locale sets the language of text on the images. The person’s default brand kit is used unless brand_kit_id names another or "none". Example: {"product_id": "…", "pack": "amazon-aplus", "aplus_text": "fields"}

plan_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id",
    "pack"
  ],
  "properties": {
    "pack": {
      "enum": [
        "amazon",
        "amazon-aplus",
        "etsy",
        "shopify",
        "tiktok-shop",
        "social",
        "instagram-grid",
        "storyboard"
      ],
      "type": "string",
      "description": "Platform pack: amazon, amazon-aplus, etsy, shopify, tiktok-shop (square images for every TikTok Shop region) or social; or a \"more formats\" pack: instagram-grid (9 organic posts) or storyboard (a video storyboard sheet)"
    },
    "locale": {
      "type": "string",
      "maxLength": 5,
      "description": "Language of text on the images, e.g. en, de, fr, ja (default: the brand’s, else the account’s, else en)"
    },
    "model_age": {
      "enum": [
        "any",
        "20s",
        "30s",
        "40s",
        "50s+"
      ],
      "type": "string",
      "description": "Clothing: the model’s age (default any)"
    },
    "aplus_text": {
      "enum": [
        "image",
        "fields"
      ],
      "type": "string",
      "description": "amazon-aplus only: image (text on the images, default) or fields (calm empty copy zones; the text comes back per image as copy, to paste into Amazon’s A+ text fields)"
    },
    "model_body": {
      "enum": [
        "any",
        "slim",
        "average",
        "curvy",
        "plus-size"
      ],
      "type": "string",
      "description": "Clothing: the model’s build (default any)"
    },
    "model_skin": {
      "enum": [
        "any",
        "light",
        "medium",
        "deep"
      ],
      "type": "string",
      "description": "Clothing: the model’s skin tone (default any)"
    },
    "product_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "aplus_format": {
      "enum": [
        "basic",
        "premium"
      ],
      "type": "string",
      "description": "amazon-aplus only: basic (970 × 600 and 970 × 300, open to every brand; default) or premium (1464 × 600 modules, only for brands Amazon approved for Premium A+)"
    },
    "brand_kit_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "string",
          "const": "none"
        }
      ],
      "description": "A brand kit from list_brand_kits, or \"none\"; default: the person’s default kit"
    }
  }
}
plan_image_set annotations
{
  "title": "Plan an image set",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
generate_image_set — Generate images
Advertised by the server during the last successful anonymous check.

Spends credits and starts making the images of an image set (all or nothing). shots: shot keys from the plan; leave empty for the default shots. Also adds images to a finished set: pass keys from get_image_set imageSet.moreShots (kinds of images the set does not have yet). Returns at once; images take about 1–3 minutes. Then call get_image_set.

generate_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 300,
      "description": "The person's own wish for every image of the set, e.g. \"autumn mood, warm wood and dried leaves\": it shapes the scenes, never the product, and adds no words. Free."
    },
    "notes": {
      "type": "object",
      "description": "The person's own wish per image, by shot key, e.g. {\"social-in-use\": \"a beagle eating from a red bowl\"}: it shapes the scene, props, angle or mood, never the product, and adds no words. Free.",
      "propertyNames": {
        "type": "string",
        "maxLength": 60
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 300
      }
    },
    "shots": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Shot keys to make; default: the plan’s default shots"
    },
    "rounds": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Versions of each image to make (default 1), to pick the best with pick_image_version; the main image on white is made once. Cost multiplies."
    },
    "also_locales": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5
      },
      "maxItems": 29,
      "description": "More image languages, e.g. [\"de\", \"fr\"]: made automatically once these images are done, each as its own set (1 credit per image with text per language; others copied free). Check the cost with estimate_cost and locales first."
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "invent_angles": {
      "type": "boolean",
      "description": "Make other-angle shots (back, side) even when the product has only one photo; the model then guesses those sides (default true)"
    },
    "translate_facts": {
      "type": "boolean",
      "description": "Translate the product facts printed on the images into the set’s language, numbers and units unchanged (default true; false prints them exactly as saved)"
    }
  }
}
generate_image_set annotations
{
  "title": "Generate images",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
localize_image_set — Translate an image set into other languages
Advertised by the server during the last successful anonymous check.

Makes a finished image set in other languages: the same images with only the text on them translated (numbers, units and names kept), for example an amazon.com set for amazon.de and amazon.fr. Each language becomes its own image set. Images with text cost 1 credit each per language (an edit); images without text are copied free. Call with dry_run true first and tell the person the cost; then call without it (spends credits). Returns the new image set ids; follow them with get_image_set. Example: {"image_set_id": "…", "locales": ["de", "fr"], "dry_run": true}

localize_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id",
    "locales"
  ],
  "properties": {
    "dry_run": {
      "type": "boolean",
      "description": "Only return the cost; nothing is made or spent"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "Image languages to make, e.g. [\"de\", \"fr\"] (codes from list_packs imageLanguages)"
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
localize_image_set annotations
{
  "title": "Translate an image set into other languages",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
recolour_image_set — Make an image set in other product colours
Advertised by the server during the last successful anonymous check.

Makes a finished image set’s main image in other colours of the product, for colour variations and swatches (stores show one image per colour; all_images true makes every image, shot for shot): only the product’s colour changes, the scene and text stay. Each colour becomes its own image set. Images with the product cost 1 credit each per colour (an edit); images without it are copied free. A hex code or a photo of the product in that colour (photo_base64) makes the colour more exact. Call with dry_run true first and tell the person the cost; then call without it (spends credits). Returns the new image set ids; follow them with get_image_set. Example: {"image_set_id": "…", "colours": [{"name": "Navy", "hex": "#1F3A5F"}], "dry_run": true}

recolour_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id",
    "colours"
  ],
  "properties": {
    "colours": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "hex": {
            "type": "string",
            "maxLength": 7,
            "description": "Its hex code, e.g. \"#8A9A5B\""
          },
          "name": {
            "type": "string",
            "maxLength": 40,
            "description": "The colour as the seller names it, e.g. \"Sage green\" (or send only hex)"
          },
          "note": {
            "type": "string",
            "maxLength": 300,
            "description": "How the colour is applied, e.g. \"only the body; the zip stays silver\""
          },
          "photo_base64": {
            "type": "string",
            "description": "A photo of the product in this colour (JPEG/PNG/WebP)"
          }
        }
      },
      "maxItems": 5,
      "minItems": 1
    },
    "dry_run": {
      "type": "boolean",
      "description": "Only return the cost; nothing is made or spent"
    },
    "all_images": {
      "type": "boolean",
      "description": "Every image of the set in each colour, not only the main image (default false)"
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
recolour_image_set annotations
{
  "title": "Make an image set in other product colours",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
estimate_cost — Estimate the credit cost
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns what an image set would cost before anything is spent: its shots (default: the plan’s ticked ones), or with locales the cost of translating the finished set, or with colours the cost of its colour versions. Also returns the balance. Free. Tell the person the cost before generate_image_set, localize_image_set or recolour_image_set. Example: {"image_set_id": "…", "shots": ["main-white", "lifestyle"]}

estimate_cost input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id"
  ],
  "properties": {
    "shots": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Shot keys from the plan; default: the ticked ones"
    },
    "colours": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "hex": {
            "type": "string",
            "maxLength": 7
          },
          "name": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
          }
        }
      },
      "maxItems": 5,
      "description": "Instead: the cost of these colour versions"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5
      },
      "maxItems": 29,
      "description": "Instead: the cost of translating into these"
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
estimate_cost annotations
{
  "title": "Estimate the credit cost",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_credit_history — Credit history
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the latest credit changes, newest first: images made, refunds for failed or cancelled images, credits bought or added, expiries. Free. Use it to answer "where did my credits go?".

get_credit_history input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1,
      "description": "How many entries (default 50)"
    }
  }
}
get_credit_history annotations
{
  "title": "Credit history",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
redo_image — Redo an image for free (wrong product or text)
Advertised by the server during the last successful anonymous check.

Makes a free new version of an image whose product came out different (shape, label, colour, logo) or whose text is wrong. Limits: 3 per image and a monthly allowance per account; outside them use regenerate_image or edit_image (1 credit). Free. Returns the new image id. Ask the person what is wrong and pass it as note. Example: {"image_id": "…", "reason": "product-changed", "note": "the label says 250 ml, it should be 500 ml"}

redo_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_id",
    "reason",
    "note"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 300,
      "minLength": 10,
      "description": "What exactly is wrong, in the person’s words, e.g. \"the cap is silver, it should be gold\""
    },
    "reason": {
      "enum": [
        "product-changed",
        "wrong-text"
      ],
      "type": "string",
      "description": "What is wrong"
    },
    "image_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
redo_image annotations
{
  "title": "Redo an image for free (wrong product or text)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
cancel_image_set — Stop the waiting images of a set
Advertised by the server during the last successful anonymous check.
Advertised destructive

Stops the images of an image set that are still waiting in the queue and refunds their credits in full. Images already being made finish as usual. Free. Returns how many were cancelled and the credits refunded.

cancel_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id"
  ],
  "properties": {
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
cancel_image_set annotations
{
  "title": "Stop the waiting images of a set",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
get_image_set — Get image set status and images
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns each image’s status (queued, generating, done, failed), its text check (passed, retried, differs, not-checked; checking while it runs), small previews of finished images, and download links valid for 15 minutes. Free. Call again until done is true. A shot can get one extra version by itself: a free retry when the text on the first one did not match.

get_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id"
  ],
  "properties": {
    "previews": {
      "type": "boolean",
      "description": "Include image previews (default true)"
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
get_image_set annotations
{
  "title": "Get image set status and images",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_marketplace_spec — Check an image against Amazon main image rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks one image (base64) against Amazon’s published main image rules: pure white background (RGB 255, 255, 255), product fills 85% or more, whole product in frame, no border, 500–10,000 px, zoom size, file type. Free; no account needed. Returns pass, warn or fail per check with the measured value.

check_marketplace_spec input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_base64"
  ],
  "properties": {
    "image_base64": {
      "type": "string",
      "minLength": 100,
      "description": "The image file as base64 (JPEG, PNG, GIF, WebP or TIFF), up to 15 MB"
    }
  }
}
check_marketplace_spec annotations
{
  "title": "Check an image against Amazon main image rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_image_set — Check images against platform rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks the finished images of a set against the platform’s published image rules (Amazon main image, sizes, formats, Etsy’s 1 MB warning, Shopify limits). Free. Returns pass, warn or info lines per image and for the whole set.

check_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id"
  ],
  "properties": {
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
check_image_set annotations
{
  "title": "Check images against platform rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regenerate_image — Make an image again
Advertised by the server during the last successful anonymous check.

Makes one image of a set again with the same prompt, as 1–5 new versions next to the old ones, to pick the best (pick_image_version). Each version costs the original image’s credits (usually 1). Not for the main image on white (a cut-out of the photo); use edit_image for that. Returns the new generation ids; then call get_image_set.

regenerate_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "generation_id"
  ],
  "properties": {
    "versions": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "New versions to make at once (default 1)"
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Image id from get_image_set"
    }
  }
}
regenerate_image annotations
{
  "title": "Make an image again",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
edit_image — Edit an image with a sentence
Advertised by the server during the last successful anonymous check.

Changes one finished image with a short instruction, e.g. "warmer light, add a marble counter" or "make the headline say Leak-proof". Keeps the product and everything else the same. The result is a new version; the old one stays. Costs the same credits as one image (usually 1); explicit, hateful or misleading changes are refused at no cost. Then call get_image_set.

edit_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "generation_id",
    "instruction"
  ],
  "properties": {
    "versions": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Variations to make at once (default 1)"
    },
    "instruction": {
      "type": "string",
      "maxLength": 500,
      "minLength": 3,
      "description": "What to change, in one or two sentences"
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Image id from get_image_set"
    }
  }
}
edit_image annotations
{
  "title": "Edit an image with a sentence",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
pick_image_version — Pick the version of an image a set uses
Advertised by the server during the last successful anonymous check.

Makes this version (a generation id from get_image_set) the one its set uses for that image: the ZIP, downloads, checks and translations use it. Every version stays stored. Free. Example: {"generation_id": "…"}

pick_image_version input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "generation_id"
  ],
  "properties": {
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
pick_image_version annotations
{
  "title": "Pick the version of an image a set uses",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
copy_image_to_set — Copy an image into another set
Advertised by the server during the last successful anonymous check.

Copies a finished image into another image set of the same product, platform and language (for example to build variant B of an A/B test), as that set’s picked version of the image. Free: the same file. Example: {"generation_id": "…", "image_set_id": "…"}

copy_image_to_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "generation_id",
    "image_set_id"
  ],
  "properties": {
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
copy_image_to_set annotations
{
  "title": "Copy an image into another set",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
name_image_set — Name an image set
Advertised by the server during the last successful anonymous check.

Gives an image set a name, e.g. "Variant B: warm light", for A/B tests; an empty name removes it. The set code (PA-…) stays in file names. Free.

name_image_set input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "image_set_id",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 80
    },
    "image_set_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
name_image_set annotations
{
  "title": "Name an image set",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
rate_image — Rate an image
Advertised by the server during the last successful anonymous check.

Thumbs up (1) or down (-1) on one generated image, with optional reasons: product-changed, wrong-text, not-realistic, bad-composition, wrong-style, low-quality. Helps improve the images. Free.

rate_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "generation_id",
    "rating"
  ],
  "properties": {
    "rating": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    },
    "reasons": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
rate_image annotations
{
  "title": "Rate an image",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
buy_credits — Get a payment link for credits
Advertised by the server during the last successful anonymous check.
Open-world

Returns a payment link for a credit pack (pack_s 50, pack_m 150, pack_l 500 credits) or a plan (creator, pro, business; month or year). The person opens it, confirms on a Product Aura page and pays in Stripe; nothing is charged by this tool. Works without an account too: then it returns a link per pack, and the page after payment shows an API key.

buy_credits input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "pack": {
      "enum": [
        "pack_s",
        "pack_m",
        "pack_l"
      ],
      "type": "string"
    },
    "plan": {
      "enum": [
        "creator",
        "pro",
        "business"
      ],
      "type": "string"
    },
    "interval": {
      "enum": [
        "month",
        "year"
      ],
      "type": "string"
    }
  }
}
buy_credits annotations
{
  "title": "Get a payment link for credits",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
auto_topup — Check or change auto top-up
Advertised by the server during the last successful anonymous check.

Shows or changes auto top-up (off by default): when the balance falls below `threshold` credits, the card saved for auto top-up buys `pack` automatically, at most `monthly_max` times a month. Call without arguments to see the status. Turning it on without that card (or with `new_card: true`) returns a Stripe link where the person saves one and sees the agreement (nothing is charged then). Ask the person before turning it on. Free; each top-up is a normal pack purchase. While `available` is false it is paused for everyone: turning it on returns `auto_topup_paused`.

auto_topup input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "pack": {
      "enum": [
        "pack_s",
        "pack_m",
        "pack_l"
      ],
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "new_card": {
      "type": "boolean",
      "description": "true: return a Stripe link to replace the saved card"
    },
    "threshold": {
      "anyOf": [
        {
          "type": "number",
          "const": 5
        },
        {
          "type": "number",
          "const": 10
        },
        {
          "type": "number",
          "const": 20
        },
        {
          "type": "number",
          "const": 50
        },
        {
          "type": "number",
          "const": 100
        }
      ]
    },
    "monthly_max": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        },
        {
          "type": "number",
          "const": 5
        },
        {
          "type": "number",
          "const": 10
        }
      ]
    }
  }
}
auto_topup annotations
{
  "title": "Check or change auto top-up",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
send_feedback — Send feedback
Advertised by the server during the last successful anonymous check.

Sends feedback to the Product Aura team (what worked, what did not, what is missing). Free.

send_feedback input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "message"
  ],
  "properties": {
    "message": {
      "type": "string",
      "maxLength": 5000,
      "minLength": 1
    }
  }
}
send_feedback annotations
{
  "title": "Send feedback",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

1 advertised

make_listing_images — Make listing images for a product

Advertised by the server during the last successful anonymous check.

Guided flow: from one product photo to a complete set of listing images for a platform.

platform
amazon, etsy, shopify, tiktok-shop, social or amazon-aplus
language
Language of text on the images, e.g. en, de

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
859 ms
95th percentile latency
859 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 859 ms · metadata changed · 34 tool(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http product-aura-mcp-productaura https://productaura.co/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add product-aura-mcp-productaura --url https://productaura.co/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable product-aura-mcp-productaura in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "product-aura-mcp-productaura": {
      "url": "https://productaura.co/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "product-aura-mcp-productaura": {
      "type": "streamableHttp",
      "url": "https://productaura.co/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start product-aura-mcp-productaura and inspect its tools.
VS Code configuration
{
  "servers": {
    "product-aura-mcp-productaura": {
      "type": "http",
      "url": "https://productaura.co/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http product-aura-mcp-productaura https://productaura.co/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://productaura.co/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "product-aura-mcp-productaura": {
      "serverUrl": "https://productaura.co/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Product Aura MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Product Aura MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing