{"$schema":"https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json","version":"1.0","protocolVersion":"2025-11-25","serverInfo":{"name":"stack0-mcp","title":"Stack0","version":"1.0.0"},"description":"Stack0 infrastructure as MCP tools: transactional and marketing email, file storage and CDN, website screenshots, AI data extraction, video transcoding, multi-step AI workflows, and 350+ third-party integrations.","iconUrl":"https://www.stack0.dev/icon.png","documentationUrl":"https://www.stack0.dev/docs/mcp","transport":{"type":"streamable-http","endpoint":"https://api.stack0.dev/mcp"},"capabilities":{"tools":{"listChanged":false}},"authentication":{"required":true,"schemes":["bearer"]},"instructions":"Authenticate with a Stack0 API key as a bearer token: `Authorization: Bearer <api_key>`. Create a key at https://app.stack0.dev under Settings -> API Keys. Tools are scoped to the organization that owns the key. Most tools take an optional `environment` of `sandbox` or `production`, defaulting to `production`.","tools":[{"name":"cdn_create_folder","description":"Create a new folder in the CDN.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectSlug":{"description":"Project slug","type":"string"},"name":{"type":"string","description":"Folder name"},"parentId":{"description":"Parent 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)$"}},"required":["name"]}},{"name":"cdn_delete","description":"Delete an asset by ID.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Asset ID"}},"required":["id"]}},{"name":"cdn_delete_folder","description":"Delete a folder by ID.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Folder ID"},"deleteContents":{"default":false,"description":"Delete folder contents (vs move to parent)","type":"boolean"}},"required":["id"]}},{"name":"cdn_get","description":"Get an asset by ID, including its CDN URLs and metadata.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Asset ID"}},"required":["id"]}},{"name":"cdn_list","description":"List assets with optional filters and pagination.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectSlug":{"description":"Project slug","type":"string"},"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"folder":{"description":"Filter by folder","type":"string"},"type":{"description":"Filter by type","type":"string","enum":["image","video","audio","document","other"]},"status":{"description":"Filter by status","type":"string","enum":["pending","processing","ready","failed","deleting"]},"search":{"description":"Search by filename","type":"string"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100},"offset":{"default":0,"description":"Pagination offset","type":"number","minimum":0},"sortBy":{"default":"createdAt","description":"Sort field","type":"string","enum":["createdAt","filename","size"]},"sortOrder":{"default":"desc","description":"Sort order","type":"string","enum":["asc","desc"]}}}},{"name":"cdn_list_folders","description":"List folders in the CDN.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectSlug":{"description":"Project slug","type":"string"},"parentId":{"description":"Parent folder ID (null for root)","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)$"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100},"offset":{"default":0,"description":"Pagination offset","type":"number","minimum":0}}}},{"name":"cdn_transform","description":"Get a URL for a transformed image with resize, crop, and format conversion options.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assetId":{"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":"Asset ID"},"width":{"description":"Target width","type":"number"},"height":{"description":"Target height","type":"number"},"format":{"description":"Output format","type":"string","enum":["jpeg","png","webp","avif"]},"quality":{"description":"Quality (1-100)","type":"number","minimum":1,"maximum":100},"fit":{"description":"Fit mode","type":"string","enum":["cover","contain","fill","inside","outside"]}},"required":["assetId"]}},{"name":"cdn_upload","description":"Generate a presigned URL for uploading a file to the CDN. Returns the upload URL and asset ID.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"filename":{"type":"string","description":"Name of the file"},"mimeType":{"type":"string","description":"MIME type of the file"},"size":{"type":"number","description":"File size in bytes"},"projectSlug":{"description":"Project slug (uses default if not specified)","type":"string"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"folder":{"description":"Folder path to upload to","type":"string"},"metadata":{"description":"Custom metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["filename","mimeType","size"]}},{"name":"extraction_delete","description":"Delete an extraction by ID.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Extraction ID"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]}},"required":["id"]}},{"name":"extraction_extract","description":"Extract structured data or content from a webpage. Returns the extraction ID for tracking.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL to extract data from"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment (sandbox or production)","type":"string","enum":["sandbox","production"]},"mode":{"default":"auto","description":"Extraction mode","type":"string","enum":["auto","schema","markdown","raw"]},"schema":{"description":"JSON schema for structured extraction","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"prompt":{"description":"Natural language extraction prompt","type":"string"},"includeLinks":{"default":true,"description":"Include links in extraction","type":"boolean"},"includeImages":{"default":true,"description":"Include images in extraction","type":"boolean"},"includeMetadata":{"default":true,"description":"Include page metadata","type":"boolean"},"waitForSelector":{"description":"CSS selector to wait for","type":"string"},"waitForTimeout":{"default":0,"description":"Wait time in ms","type":"number","minimum":0,"maximum":30000}},"required":["url"]}},{"name":"extraction_get","description":"Get an extraction by ID, including its status and extracted data.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Extraction ID"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]}},"required":["id"]}},{"name":"extraction_list","description":"List extractions with optional filters. Returns paginated results.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectId":{"description":"Filter by project 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)$"},"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"status":{"description":"Filter by status","type":"string","enum":["pending","processing","completed","failed"]},"url":{"description":"Filter by URL (partial match)","type":"string"},"limit":{"default":20,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"integrations_crm_create_contact","description":"Create a contact in a connected CRM.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"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":"Connection ID"},"firstName":{"description":"First name","type":"string"},"lastName":{"description":"Last name","type":"string"},"email":{"description":"Email address","type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"description":"Phone number","type":"string"},"companyId":{"description":"Company ID","type":"string"},"title":{"description":"Job title","type":"string"},"customFields":{"description":"Custom fields","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["connectionId"]}},{"name":"integrations_crm_list_contacts","description":"List contacts from a connected CRM (HubSpot, Salesforce, Pipedrive, etc.).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"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":"Connection ID"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100},"cursor":{"description":"Pagination cursor","type":"string"},"sortBy":{"description":"Sort by field","type":"string"},"sortOrder":{"default":"desc","description":"Sort order","type":"string","enum":["asc","desc"]}},"required":["connectionId"]}},{"name":"integrations_crm_update_contact","description":"Update a contact in a connected CRM.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"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":"Connection ID"},"firstName":{"description":"First name","type":"string"},"lastName":{"description":"Last name","type":"string"},"email":{"description":"Email address","type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"description":"Phone number","type":"string"},"companyId":{"description":"Company ID","type":"string"},"title":{"description":"Job title","type":"string"},"customFields":{"description":"Custom fields","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"id":{"type":"string","description":"Contact ID to update"}},"required":["connectionId","id"]}},{"name":"integrations_list_connections","description":"List all OAuth connections for third-party integrations (CRM, storage, etc.).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectId":{"description":"Filter by project 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)$"},"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"connectorSlug":{"description":"Filter by connector","type":"string"},"status":{"description":"Filter by status","type":"string","enum":["pending","connected","error","expired"]},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"integrations_list_connectors","description":"List available connectors (HubSpot, Salesforce, Google Drive, etc.).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"description":"Filter by category","type":"string","enum":["crm","storage","communication","productivity"]}}}},{"name":"integrations_storage_download","description":"Download a file from a connected storage provider.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"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":"Connection ID"},"fileId":{"type":"string","description":"File ID"}},"required":["connectionId","fileId"]}},{"name":"integrations_storage_list_files","description":"List files from a connected storage provider (Google Drive, Dropbox, OneDrive).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"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":"Connection ID"},"folderId":{"description":"Folder ID to list files from","type":"string"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100},"cursor":{"description":"Pagination cursor","type":"string"}},"required":["connectionId"]}},{"name":"mail_create_contact","description":"Create or update a contact in the mailing list.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Contact email"},"firstName":{"description":"First name","type":"string"},"lastName":{"description":"Last name","type":"string"},"metadata":{"description":"Custom metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["email"]}},{"name":"mail_get","description":"Get an email by ID, including its status and tracking info.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Email ID"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]}},"required":["id"]}},{"name":"mail_list","description":"List sent emails with optional filters.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"status":{"description":"Filter by status","type":"string","enum":["pending","sent","delivered","bounced","failed","deferred"]},"to":{"description":"Filter by recipient (partial match)","type":"string"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"mail_list_contacts","description":"List contacts in the mailing list.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"status":{"description":"Filter by status","type":"string","enum":["subscribed","unsubscribed","bounced","complained"]},"search":{"description":"Search by email or name","type":"string"},"limit":{"default":50,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"mail_send","description":"Send a single email. Returns the email ID and status.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"from":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}],"description":"Sender email or {email, name}"},"to":{"anyOf":[{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]},{"type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}}],"description":"Recipient(s)"},"subject":{"type":"string","description":"Email subject"},"html":{"description":"HTML content","type":"string"},"text":{"description":"Plain text content","type":"string"},"cc":{"description":"CC recipients","type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}},"bcc":{"description":"BCC recipients","type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}},"replyTo":{"description":"Reply-to address","anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]},"templateId":{"description":"Template ID to use","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)$"},"templateVariables":{"description":"Template variables","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"tags":{"description":"Tags for filtering","type":"array","items":{"type":"string"}},"metadata":{"description":"Custom metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["from","to","subject"]}},{"name":"mail_send_batch","description":"Send multiple emails in batch. Returns results for each email.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"emails":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"from":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}],"description":"Sender email or {email, name}"},"to":{"anyOf":[{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]},{"type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}}],"description":"Recipient(s)"},"subject":{"type":"string","description":"Email subject"},"html":{"description":"HTML content","type":"string"},"text":{"description":"Plain text content","type":"string"},"cc":{"description":"CC recipients","type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}},"bcc":{"description":"BCC recipients","type":"array","items":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]}},"replyTo":{"description":"Reply-to address","anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string"}},"required":["email"]}]},"templateId":{"description":"Template ID to use","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)$"},"templateVariables":{"description":"Template variables","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"tags":{"description":"Tags for filtering","type":"array","items":{"type":"string"}},"metadata":{"description":"Custom metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["from","to","subject"]},"description":"Array of emails to send"}},"required":["emails"]}},{"name":"screenshots_capture","description":"Capture a screenshot of a webpage. Returns the screenshot ID for tracking.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL to capture screenshot of"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment (sandbox or production)","type":"string","enum":["sandbox","production"]},"format":{"default":"png","description":"Image format","type":"string","enum":["png","jpeg","webp","pdf"]},"quality":{"default":80,"description":"Image quality (1-100)","type":"number","minimum":1,"maximum":100},"fullPage":{"default":false,"description":"Capture full page","type":"boolean"},"deviceType":{"default":"desktop","description":"Device type","type":"string","enum":["desktop","tablet","mobile"]},"viewportWidth":{"default":1280,"description":"Viewport width","type":"number","minimum":320,"maximum":3840},"viewportHeight":{"default":720,"description":"Viewport height","type":"number","minimum":240,"maximum":2160},"deviceScaleFactor":{"default":1,"description":"Device scale factor","type":"number","minimum":1,"maximum":3},"waitForSelector":{"description":"CSS selector to wait for","type":"string"},"waitForTimeout":{"default":0,"description":"Wait time in ms","type":"number","minimum":0,"maximum":30000},"blockAds":{"default":true,"description":"Block ads","type":"boolean"},"blockCookieBanners":{"default":false,"description":"Block cookie banners","type":"boolean"},"blockChatWidgets":{"default":false,"description":"Block chat widgets","type":"boolean"},"blockTrackers":{"default":false,"description":"Block trackers","type":"boolean"},"darkMode":{"default":false,"description":"Enable dark mode","type":"boolean"},"selector":{"description":"Capture only this element","type":"string"},"omitBackground":{"default":false,"description":"Transparent background","type":"boolean"}},"required":["url"]}},{"name":"screenshots_delete","description":"Delete a screenshot by ID.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Screenshot ID"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]}},"required":["id"]}},{"name":"screenshots_get","description":"Get a screenshot by ID, including its status and result URL.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Screenshot ID"},"projectId":{"description":"Project ID for scoping","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)$"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]}},"required":["id"]}},{"name":"screenshots_list","description":"List screenshots with optional filters. Returns paginated results.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectId":{"description":"Filter by project 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)$"},"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"status":{"description":"Filter by status","type":"string","enum":["pending","processing","completed","failed"]},"url":{"description":"Filter by URL (partial match)","type":"string"},"limit":{"default":20,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"video_cancel_job","description":"Cancel a pending or running transcoding job.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jobId":{"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":"Transcode job ID"}},"required":["jobId"]}},{"name":"video_extract_audio","description":"Extract audio track from a video asset.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assetId":{"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":"Video asset ID"},"projectSlug":{"description":"Project slug","type":"string"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"format":{"default":"mp3","description":"Audio format","type":"string","enum":["mp3","aac","wav"]},"bitrate":{"description":"Bitrate in kbps","type":"number"}},"required":["assetId"]}},{"name":"video_get_job","description":"Get the status and details of a transcoding job.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jobId":{"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":"Transcode job ID"}},"required":["jobId"]}},{"name":"video_get_streaming_url","description":"Get streaming URLs for a transcoded asset.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assetId":{"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":"Asset ID"}},"required":["assetId"]}},{"name":"video_list_jobs","description":"List transcoding jobs with optional filters.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectSlug":{"description":"Project slug","type":"string"},"assetId":{"description":"Filter by asset 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)$"},"status":{"description":"Filter by status","type":"string","enum":["pending","processing","completed","failed","cancelled","queued"]},"limit":{"default":20,"description":"Max results","type":"number","minimum":1,"maximum":100},"offset":{"default":0,"description":"Pagination offset","type":"number","minimum":0}}}},{"name":"video_transcode","description":"Start a video transcoding job to generate HLS streams or MP4 variants.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assetId":{"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":"Video asset ID to transcode"},"projectSlug":{"description":"Project slug","type":"string"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"outputFormat":{"default":"hls","description":"Output format","type":"string","enum":["hls","mp4"]},"variants":{"minItems":1,"type":"array","items":{"type":"object","properties":{"quality":{"type":"string","enum":["360p","480p","720p","1080p","1440p","2160p"]},"bitrate":{"description":"Bitrate in kbps","type":"number"},"codec":{"default":"h264","type":"string","enum":["h264","h265"]},"maxFramerate":{"description":"Max framerate","type":"number"}},"required":["quality"]},"description":"Quality variants to generate"},"watermark":{"description":"Watermark configuration","type":"object","properties":{"type":{"type":"string","enum":["image","text"]},"imageAssetId":{"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)$"},"text":{"type":"string"},"position":{"type":"string","enum":["top-left","top-right","bottom-left","bottom-right","center"]},"opacity":{"default":80,"type":"number","minimum":0,"maximum":100}},"required":["type","position"]},"trim":{"description":"Trim configuration","type":"object","properties":{"start":{"type":"number","description":"Start time in seconds"},"end":{"type":"number","description":"End time in seconds"}},"required":["start","end"]},"webhookUrl":{"description":"Webhook URL for completion","type":"string","format":"uri"}},"required":["assetId","variants"]}},{"name":"workflows_cancel_run","description":"Cancel a pending or running workflow.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Run ID"}},"required":["id"]}},{"name":"workflows_create","description":"Create a new AI workflow with LLM, HTTP, and transform steps. Workflows are DAGs that can process data through multiple steps.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9-]+$","description":"Unique slug for the workflow"},"name":{"type":"string","description":"Workflow name"},"description":{"description":"Workflow description","type":"string"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"steps":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique step ID"},"name":{"type":"string","description":"Step name"},"type":{"type":"string","enum":["llm","image","video","audio","code","http","transform","condition","loop"],"description":"Step type"},"provider":{"type":"string","enum":["anthropic","openai","gemini","replicate","stack0"],"description":"Provider"},"model":{"type":"string","description":"Model name"},"config":{"description":"Step configuration","type":"object","properties":{"prompt":{"description":"Prompt template","type":"string"},"systemPrompt":{"description":"System prompt","type":"string"},"temperature":{"description":"Temperature","type":"number"},"maxTokens":{"description":"Max tokens","type":"number"},"responseFormat":{"description":"Response format","type":"string","enum":["text","json"]},"url":{"description":"URL for HTTP steps","type":"string"},"method":{"description":"HTTP method","type":"string","enum":["GET","POST","PUT","DELETE"]}}},"dependsOn":{"description":"Step IDs this step depends on","type":"array","items":{"type":"string"}}},"required":["id","name","type","provider","model"]},"description":"Workflow steps"},"variables":{"description":"Input variables","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"type":{"type":"string","enum":["string","number","boolean","object","array","image"],"description":"Variable type"},"required":{"default":false,"description":"Is variable required","type":"boolean"},"default":{"description":"Default value"},"description":{"description":"Variable description","type":"string"}},"required":["name","type"]}}},"required":["slug","name","steps"]}},{"name":"workflows_get_run","description":"Get the status and result of a workflow run.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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":"Run ID"}},"required":["id"]}},{"name":"workflows_list","description":"List all workflows in the organization.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"isActive":{"description":"Filter by active status","type":"boolean"},"limit":{"default":20,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"workflows_list_runs","description":"List workflow runs with optional filters.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workflowId":{"description":"Filter by workflow 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)$"},"environment":{"description":"Filter by environment","default":"production","type":"string","enum":["sandbox","production"]},"status":{"description":"Filter by status","type":"string","enum":["pending","running","completed","failed","cancelled"]},"limit":{"default":20,"description":"Max results","type":"number","minimum":1,"maximum":100}}}},{"name":"workflows_run","description":"Execute a workflow with provided input variables. Returns a run ID for tracking progress.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workflowId":{"description":"Workflow ID (alternative to slug)","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)$"},"workflowSlug":{"description":"Workflow slug (alternative to ID)","type":"string"},"environment":{"default":"production","description":"Environment","type":"string","enum":["sandbox","production"]},"variables":{"description":"Input variables","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"metadata":{"description":"Custom metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"webhook":{"description":"Webhook configuration","type":"object","properties":{"url":{"type":"string","format":"uri","description":"Webhook URL for completion notification"},"secret":{"description":"Webhook secret for HMAC signature","type":"string"}},"required":["url"]}}}}],"prompts":[],"resources":[],"_meta":{"dev.stack0/supportedProtocolVersions":["2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"],"dev.stack0/toolCount":41,"dev.stack0/openapi":"https://api.stack0.dev/openapi.json","dev.stack0/llmsTxt":"https://www.stack0.dev/llms.txt"}}