Server definition
- Hash
- sha256:3f85954a229bacf2a478cfe7f3599005a1f2ca84c31e2b4838307b5781537a80
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "Tintin Tryon: AI product photography for fashion sellers. Start with the zero-signup tools — audit_store(store_url) finds stale and off-season listing photos on any Shopify store and returns ready-to-run fixes; get_seasonal_guide shows which retail shoot windows are open now. Generation tools need a free account API key (https://tintin-x.com/mcp).",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"store_url": {
"description": "Store domain or URL, e.g. examplestore.com",
"type": "string"
}
},
"required": [
"store_url"
],
"type": "object"
},
"name": "audit_store",
"outputSchema": {
"additionalProperties": true,
"properties": {
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"next_steps": {
"description": "Suggested follow-up actions",
"type": "string"
},
"scanned_listings": {
"description": "Number of products found in the sitemap",
"type": "integer"
},
"seasonal_context": {
"description": "Retail shoot windows currently open or urgent",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"store": {
"description": "Normalized store host that was audited",
"type": "string"
},
"summary": {
"additionalProperties": true,
"description": "Issue counts: stale_photos, season_mismatches, calendar_opportunities, total_work_orders, estimated_credits_to_fix_all",
"type": "object"
},
"work_orders": {
"description": "Per-listing findings with a pre-filled create_tryon_job fix block",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"work_orders_truncated": {
"description": "True when more work orders exist than shown",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"garment_image_url": {
"description": "A listing photo URL from that store (audit work order image_url)",
"type": "string"
},
"model": {
"description": "Preset model (default woman)",
"enum": [
"man",
"woman"
],
"type": "string"
},
"product_type": {
"description": "Top | Bottom | Dress | Full-body (default Top)",
"type": "string"
},
"store_url": {
"description": "The store the photo belongs to (same as audit_store)",
"type": "string"
}
},
"required": [
"store_url",
"garment_image_url"
],
"type": "object"
},
"name": "create_preview_job",
"outputSchema": {
"additionalProperties": true,
"properties": {
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"poll": {
"description": "How to retrieve the result",
"type": "string"
},
"preview_id": {
"description": "Preview job UUID — poll with get_preview_status",
"type": "string"
},
"status": {
"description": "Initial job state (usually queued)",
"type": "string"
},
"store": {
"description": "Normalized store host the preview belongs to",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"api_key": {
"description": "API key if the client can't send an Authorization header",
"type": "string"
},
"aspect_ratio": {
"description": "Output aspect ratio, e.g. 3:4 (default)",
"type": "string"
},
"garment_image_url": {
"description": "Public URL of the garment/product photo",
"type": "string"
},
"model": {
"description": "Preset model (default woman)",
"enum": [
"man",
"woman"
],
"type": "string"
},
"model_image_url": {
"description": "Optional: custom model reference photo URL",
"type": "string"
},
"product_type": {
"description": "Top | Bottom | Dress | Full-body (default Top)",
"type": "string"
},
"prompt": {
"description": "Optional styling instructions",
"type": "string"
},
"resolution": {
"description": "Output resolution: 2K costs 1 credit, 4K costs 2",
"enum": [
"2K",
"4K"
],
"type": "string"
}
},
"required": [
"garment_image_url"
],
"type": "object"
},
"name": "create_tryon_job",
"outputSchema": {
"additionalProperties": true,
"properties": {
"credits_charged": {
"description": "Studio credits debited for this generation",
"type": "number"
},
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"job_id": {
"description": "Generation job UUID — poll with get_job_status",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"poll": {
"description": "How to retrieve the result",
"type": "string"
},
"resolution": {
"description": "Output resolution the job will render at",
"type": "string"
},
"status": {
"description": "Initial job state (usually queued)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Studio credit balance and top-up link. Requires an API key.",
"inputSchema": {
"properties": {
"api_key": {
"description": "API key if the client can't send an Authorization header",
"type": "string"
}
},
"type": "object"
},
"name": "get_credits_balance",
"outputSchema": {
"additionalProperties": true,
"properties": {
"credits": {
"description": "Available studio credits (subscription + bonus)",
"type": "number"
},
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"note": {
"description": "What one credit buys",
"type": "string"
},
"topup_url": {
"description": "Where to buy more credits",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Poll a generation job. When succeeded, returns presigned output image URLs (valid 1h). Requires an API key.",
"inputSchema": {
"properties": {
"api_key": {
"description": "API key if the client can't send an Authorization header",
"type": "string"
},
"job_id": {
"description": "Job UUID returned by create_tryon_job",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "get_job_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"error_message": {
"description": "Failure detail when status is failed",
"type": "string"
},
"job_id": {
"description": "Generation job UUID",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"output_urls": {
"description": "Presigned result image URLs (present when succeeded)",
"items": {
"type": "string"
},
"type": "array"
},
"output_urls_expire_in": {
"description": "Seconds until output_urls expire (3600)",
"type": "integer"
},
"status": {
"description": "Job state: queued | running | succeeded | failed",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Poll a free preview. When succeeded, returns the preview image URL (valid 1h). No account needed.",
"inputSchema": {
"properties": {
"preview_id": {
"description": "Preview UUID returned by create_preview_job",
"type": "string"
}
},
"required": [
"preview_id"
],
"type": "object"
},
"name": "get_preview_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"error_message": {
"description": "Failure detail when status is failed",
"type": "string"
},
"job_id": {
"description": "Generation job UUID",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"output_urls": {
"description": "Presigned result image URLs (present when succeeded)",
"items": {
"type": "string"
},
"type": "array"
},
"output_urls_expire_in": {
"description": "Seconds until output_urls expire (3600)",
"type": "integer"
},
"status": {
"description": "Job state: queued | running | succeeded | failed",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"category": {
"description": "Optional: limit guide links to one category",
"enum": [
"womenswear",
"swim",
"lingerie"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_seasonal_guide",
"outputSchema": {
"additionalProperties": true,
"properties": {
"error": {
"description": "Machine-readable error code (only present on failures)",
"type": "string"
},
"events": {
"description": "Shoot windows with event, name, peak, shoot_deadline, window_open, state (open|urgent|closed|upcoming), days_to_deadline, note, and guide links",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"how_to_act": {
"description": "How to use the open windows",
"type": "string"
},
"message": {
"description": "Human-readable explanation of the failure",
"type": "string"
},
"today": {
"description": "Current date (ISO 8601)",
"type": "string"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3f85954a229bacf2a478cfe7f3599005a1f2ca84c31e2b4838307b5781537a80 | sha256sum