Tintin Tryon
AI product photography for fashion sellers: Shopify photo audits, seasonal guides, AI try-on.
Should I use this
Quality & Safety
Findings (2)
- LOWin get_job_status
- LOWin get_credits_balance
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"tryon": {
"url": "https://tintin-x.com/mcp"
}
}
}Remote endpoints
https://tintin-x.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢audit_store(store_url)
Audit a Shopify store's listing photos (no account needed). Scans the public product sitemap for stale photos (≥180 days), season mismatches (e.g. winter items with summer-shot photos), and upcoming retail-calendar windows. Returns work orders with pre-filled create_tryon_job fixes and estimated credit costs.
Input Schema
{
"type": "object",
"properties": {
"store_url": {
"type": "string",
"description": "Store domain or URL, e.g. examplestore.com"
}
},
"required": [
"store_url"
]
}Output Schema
{
"type": "object",
"properties": {
"store": {
"type": "string",
"description": "Normalized store host that was audited"
},
"scanned_listings": {
"type": "integer",
"description": "Number of products found in the sitemap"
},
"summary": {
"type": "object",
"description": "Issue counts: stale_photos, season_mismatches, calendar_opportunities, total_work_orders, estimated_credits_to_fix_all",
"additionalProperties": true
},
"work_orders": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-listing findings with a pre-filled create_tryon_job fix block"
},
"work_orders_truncated": {
"type": "boolean",
"description": "True when more work orders exist than shown"
},
"seasonal_context": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Retail shoot windows currently open or urgent"
},
"next_steps": {
"type": "string",
"description": "Suggested follow-up actions"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟢get_seasonal_guide(category)
Retail shoot calendar for fashion sellers (no account needed): which shoot windows (Labor Day, Halloween, Fall/Winter drop, Black Friday, Holiday) are open or urgent right now, deadlines, and links to per-category shoot guides with recommended shots.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"womenswear",
"swim",
"lingerie"
],
"description": "Optional: limit guide links to one category"
}
}
}Output Schema
{
"type": "object",
"properties": {
"today": {
"type": "string",
"description": "Current date (ISO 8601)"
},
"events": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Shoot windows with event, name, peak, shoot_deadline, window_open, state (open|urgent|closed|upcoming), days_to_deadline, note, and guide links"
},
"how_to_act": {
"type": "string",
"description": "How to use the open windows"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟡create_preview_job(store_url, garment_image_url, product_type, model)
ONE free on-model preview per store, no account needed. Pass the store and one of its listing photo URLs (from an audit_store work order) to generate a free 2K on-model try-on photo — the taste before buying credits. Poll with get_preview_status.
Input Schema
{
"type": "object",
"properties": {
"store_url": {
"type": "string",
"description": "The store the photo belongs to (same as audit_store)"
},
"garment_image_url": {
"type": "string",
"description": "A listing photo URL from that store (audit work order image_url)"
},
"product_type": {
"type": "string",
"description": "Top | Bottom | Dress | Full-body (default Top)"
},
"model": {
"type": "string",
"enum": [
"man",
"woman"
],
"description": "Preset model (default woman)"
}
},
"required": [
"store_url",
"garment_image_url"
]
}Output Schema
{
"type": "object",
"properties": {
"preview_id": {
"type": "string",
"description": "Preview job UUID — poll with get_preview_status"
},
"status": {
"type": "string",
"description": "Initial job state (usually queued)"
},
"store": {
"type": "string",
"description": "Normalized store host the preview belongs to"
},
"poll": {
"type": "string",
"description": "How to retrieve the result"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟢get_preview_status(preview_id)
Poll a free preview. When succeeded, returns the preview image URL (valid 1h). No account needed.
Input Schema
{
"type": "object",
"properties": {
"preview_id": {
"type": "string",
"description": "Preview UUID returned by create_preview_job"
}
},
"required": [
"preview_id"
]
}Output Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Generation job UUID"
},
"status": {
"type": "string",
"description": "Job state: queued | running | succeeded | failed"
},
"error_message": {
"type": "string",
"description": "Failure detail when status is failed"
},
"output_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Presigned result image URLs (present when succeeded)"
},
"output_urls_expire_in": {
"type": "integer",
"description": "Seconds until output_urls expire (3600)"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟡create_tryon_job(garment_image_url, product_type, model, model_image_url, prompt, ...)
Generate an on-model try-on photo from a garment/product image URL (e.g. straight from an audit_store work order). Charges 1 credit (2K) or 2 credits (4K) from the account's studio credits. Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"garment_image_url": {
"type": "string",
"description": "Public URL of the garment/product photo"
},
"product_type": {
"type": "string",
"description": "Top | Bottom | Dress | Full-body (default Top)"
},
"model": {
"type": "string",
"enum": [
"man",
"woman"
],
"description": "Preset model (default woman)"
},
"model_image_url": {
"type": "string",
"description": "Optional: custom model reference photo URL"
},
"prompt": {
"type": "string",
"description": "Optional styling instructions"
},
"aspect_ratio": {
"type": "string",
"description": "Output aspect ratio, e.g. 3:4 (default)"
},
"resolution": {
"type": "string",
"enum": [
"2K",
"4K"
],
"description": "Output resolution: 2K costs 1 credit, 4K costs 2"
},
"api_key": {
"type": "string",
"description": "API key if the client can't send an Authorization header"
}
},
"required": [
"garment_image_url"
]
}Output Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Generation job UUID — poll with get_job_status"
},
"status": {
"type": "string",
"description": "Initial job state (usually queued)"
},
"credits_charged": {
"type": "number",
"description": "Studio credits debited for this generation"
},
"resolution": {
"type": "string",
"description": "Output resolution the job will render at"
},
"poll": {
"type": "string",
"description": "How to retrieve the result"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟢get_job_status(job_id, api_key)
Poll a generation job. When succeeded, returns presigned output image URLs (valid 1h). Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Job UUID returned by create_tryon_job"
},
"api_key": {
"type": "string",
"description": "API key if the client can't send an Authorization header"
}
},
"required": [
"job_id"
]
}Output Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Generation job UUID"
},
"status": {
"type": "string",
"description": "Job state: queued | running | succeeded | failed"
},
"error_message": {
"type": "string",
"description": "Failure detail when status is failed"
},
"output_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Presigned result image URLs (present when succeeded)"
},
"output_urls_expire_in": {
"type": "integer",
"description": "Seconds until output_urls expire (3600)"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}🟢get_credits_balance(api_key)
Studio credit balance and top-up link. Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "API key if the client can't send an Authorization header"
}
}
}Output Schema
{
"type": "object",
"properties": {
"credits": {
"type": "number",
"description": "Available studio credits (subscription + bonus)"
},
"note": {
"type": "string",
"description": "What one credit buys"
},
"topup_url": {
"type": "string",
"description": "Where to buy more credits"
},
"error": {
"type": "string",
"description": "Machine-readable error code (only present on failures)"
},
"message": {
"type": "string",
"description": "Human-readable explanation of the failure"
}
},
"additionalProperties": true
}Community
Evidence