Carryo Website Publisher
이 MCP로 할 수 있는 일
Creates, previews, publishes, edits and unpublishes HTML websites, landing pages, reports and proposals, with hosted images, drafts, version history and form-response access.
도구
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['capabilities', 'usage', 'limits'], 'properties': {'usage': {'type': 'object', 'required': ['activeLinks', 'activeLinkLimit', 'remainingActiveLinks', 'newLinksThisPeriod', 'newLinkLimit', 'remainingNewLinks', 'newLinksResetAt'], 'properties': {'activeLinks': {'type': 'number', 'description': 'Current number of active Personal links'}, 'newLinkLimit': {'type': ['number', 'null'], 'description': 'Maximum new Personal links in the current period, or null when no creation limit applies'}, 'activeLinkLimit': {'type': ['number', 'null'], 'description': 'Maximum active Personal links, or null when no product limit applies'}, 'newLinksResetAt': {'type': ['string', 'null'], 'description': 'ISO-8601 time when the Personal creation allowance resets, or null when no creation limit applies'}, 'remainingNewLinks': {'type': ['number', 'null'], 'description': 'New Personal links still available in the current period, or null when no creation limit applies'}, 'newLinksThisPeriod': {'type': 'number', 'description': 'New Personal links created or claimed in the current creation period'}, 'remainingActiveLinks': {'type': ['number', 'null'], 'description': 'How many more Personal links can be published now, or null when no product limit applies'}}, 'description': 'Personal link usage needed to answer the current action', 'additionalProperties': False}, 'limits': {'type': 'object', 'required': ['updatesPerLink', 'inactivityWindowDays', 'revokedRecoveryDays'], 'properties': {'imagesPerSite': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'description': 'Default hosted-image count per Personal website; matching websiteOverrides takes precedence'}, 'updatesPerLink': {'type': ['number', 'null'], 'description': 'Maximum updates per link, or null for unlimited'}, 'revokedRecoveryDays': {'type': 'number', 'description': 'Default recovery period after inactivity; manual unpublishing may not be reversible. Check the website policy and Carryo settings'}, 'inactivityWindowDays': {'type': ['number', 'null'], 'description': 'Days after the owner last acts in Carryo before a link is taken offline; null when inactivity does not apply'}}, 'description': 'Personal default policies; websiteOverrides takes precedence for the named websites', 'additionalProperties': False}, 'capabilities': {'type': 'object', 'required': ['canPublishLink', 'canUseCustomUrlEnding', 'canCustomizePasswordPage', 'canHideCarryoBadge', 'linksStayOnlineWithoutActivity'], 'properties': {'canPublishLink': {'type': 'boolean', 'description': 'Whether another Personal link can be published now'}, 'canHideCarryoBadge': {'type': 'boolean', 'description': 'Whether the Carryo badge can be hidden in Carryo settings'}, 'canUseCustomUrlEnding': {'type': 'boolean', 'description': 'Whether a custom Carryo URL ending can be used'}, 'canCollectFormResponses': {'type': 'boolean', 'description': 'Whether Personal forms can currently collect responses; Team access is resolved from the website'}, 'canCustomizePasswordPage': {'type': 'boolean', 'description': 'Whether password pages can use custom branding in Carryo'}, 'linksStayOnlineWithoutActivity': {'type': 'boolean', 'description': 'Whether links stay online without periodic owner activity'}}, 'description': 'Personal default capabilities. Use websiteOverrides for the named websites, not for the whole account', 'additionalProperties': False}, 'websiteOverrides': {'type': 'array', 'items': {'type': 'object', 'required': ['linkId', 'updatesPerLink', 'inactivityWindowDays', 'canHideCarryoBadge', 'canUseCustomDomain'], 'properties': {'linkId': {'type': 'string', 'description': 'The website this exception applies to; never apply it to other websites'}, 'imagesPerSite': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'description': 'Maximum hosted images on this website; null means no plan-specific count limit'}, 'updatesPerLink': {'type': ['number', 'null'], 'description': 'Update limit for this website; null means unlimited subject to fair use'}, 'canHideCarryoBadge': {'type': 'boolean', 'description': 'Whether this website can hide its badge in Carryo settings; removal is not automatic'}, 'canUseCustomDomain': {'type': 'boolean', 'description': 'Whether this website can use a custom domain configured in Carryo'}, 'inactivityWindowDays': {'type': ['number', 'null'], 'description': 'Owner-inactivity window for this website; null means no inactivity expiry'}}, 'additionalProperties': False}, 'description': 'Website-specific exceptions to Personal defaults. Explicit owner-set expiry and unpublishing still apply'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaces'], 'properties': {'workspaces': {'type': 'array', 'items': {'type': 'object', 'required': ['workspaceId', 'workspaceName', 'role', 'capabilities'], 'properties': {'role': {'enum': ['owner', 'editor'], 'type': 'string', 'description': 'The authenticated user role in this workspace'}, 'workspaceId': {'type': 'string', 'description': 'Stable Carryo workspace identifier to use in later tool calls'}, 'capabilities': {'type': 'object', 'required': ['canListLinks', 'canPublishLinks', 'canUpdateLinks', 'canRevokeLinks'], 'properties': {'canListLinks': {'type': 'boolean', 'description': 'Whether workspace links can be listed'}, 'canRevokeLinks': {'type': 'boolean', 'description': 'Whether workspace links can be revoked'}, 'canUpdateLinks': {'type': 'boolean', 'description': 'Whether workspace links can be updated'}, 'canPublishLinks': {'type': 'boolean', 'description': 'Whether new workspace links can be published'}}, 'description': 'Workspace actions currently available to the authenticated user', 'additionalProperties': False}, 'workspaceName': {'type': 'string', 'description': 'User-facing Carryo workspace name'}}, 'additionalProperties': False}, 'description': 'Carryo workspaces the authenticated user can access'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'htmlContent'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'notifyOwner': {'type': 'boolean'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 5, 'description': 'Optional definitions for JavaScript/React forms using window.CarryoForms.submit(key, values), which resolves on acceptance and rejects on failure. Stable keys and field names identify forms across edits. Static collection forms are inferred from data-carryo-form="key" and named controls without duplicate definitions; placeholder submit handlers can block collection. Local calculator/filter forms use data-carryo-local and do not collect responses. Existing external endpoints retain their destination. Visitor acknowledgement is disabled unless explicitly enabled.'}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'fileId': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Known attachment file_id matching an imageFiles entry. Prefer fileIndex if the host-generated ID is not visible. Mutually exclusive with fileIndex and sourceUrl.'}, 'fileIndex': {'type': 'integer', 'maximum': 19, 'minimum': 0, 'description': 'Zero-based position in imageFiles: 0 selects its first attachment. Use this when the host generates file IDs during upload. May be omitted when imageFiles contains exactly one attachment. Mutually exclusive with fileId and sourceUrl.'}, 'sourceUrl': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Fetchable HTTP(S) image URL for Carryo to import and host. Mutually exclusive with fileId and fileIndex. Data URLs and base64 bytes are unsupported.'}, 'contentType': {'type': 'string', 'maxLength': 255, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional image assets to add or replace. Each entry requires a relative website path. With one imageFiles attachment, path alone uses that attachment. Otherwise select exactly one source: fileIndex (zero-based imageFiles position), a known fileId, or a fetchable HTTP(S) sourceUrl. Never guess generated file IDs. Existing images are preserved when omitted; replacing an existing path does not use another slot. Base64 bytes and data URLs are unsupported.'}, 'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to update'}, 'fileName': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Optional replacement file name'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO-8601 expiration timestamp'}, 'imageFiles': {'type': 'array', 'items': {'type': 'object', 'required': ['download_url', 'file_id'], 'properties': {'file_id': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'file_name': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'mime_type': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'download_url': {'type': 'string', 'maxLength': 4096, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': "Optional image attachments supplied through the host's file upload support. The host supplies file_id and download_url. Map each attachment to a website path in assets: with one attachment, path alone is sufficient; with multiple attachments, use fileIndex. The assistant does not need to know generated file IDs or download URLs. Temporary URLs are import sources, not hosted image URLs. Clients without file input support can omit this field."}, 'htmlContent': {'type': 'string', 'maxLength': 5242880, 'minLength': 1, 'description': 'Updated complete HTML for the Carryo page while keeping the same URL.'}, 'sharingMode': {'enum': ['public'], 'type': 'string', 'description': 'Optional replacement publishing mode. Only public live links are supported here.'}, 'removeAssetPaths': {'type': 'array', 'items': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'maxItems': 20, 'description': 'Optional relative asset paths to remove from the page asset bundle.'}, 'expectedVersionNumber': {'type': 'integer', 'description': 'Expected current website version number for detecting conflicting edits.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'code': {'type': 'string'}, 'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'status': {'enum': ['requires_adaptation', 'requires_entitlement', 'unsupported', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}, 'guidance': {'type': 'object', 'additionalProperties': {}}, 'shareUrl': {'type': 'string', 'description': 'Primary share URL'}, 'expiresAt': {'$ref': '#/properties/manageUrl', 'description': 'Optional ISO-8601 expiration timestamp'}, 'manageUrl': {'type': ['string', 'null'], 'description': 'Carryo web-app URL for managing the link URL, password, views, and edit history'}, 'updatedAt': {'type': 'string', 'description': 'ISO-8601 update timestamp'}, 'workspaceId': {'$ref': '#/properties/manageUrl', 'description': 'Workspace that owns the link; omitted for Personal'}, 'alternateShareUrls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Alternate share URLs, when available'}, 'currentVersionNumber': {'type': 'number'}, 'publicationPerformed': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId'], 'properties': {'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'fileId': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Known attachment file_id matching an imageFiles entry. Prefer fileIndex if the host-generated ID is not visible. Mutually exclusive with fileIndex and sourceUrl.'}, 'fileIndex': {'type': 'integer', 'maximum': 19, 'minimum': 0, 'description': 'Zero-based position in imageFiles: 0 selects its first attachment. Use this when the host generates file IDs during upload. May be omitted when imageFiles contains exactly one attachment. Mutually exclusive with fileId and sourceUrl.'}, 'sourceUrl': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Fetchable HTTP(S) image URL for Carryo to import and host. Mutually exclusive with fileId and fileIndex. Data URLs and base64 bytes are unsupported.'}, 'contentType': {'type': 'string', 'maxLength': 255, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional image assets to add or replace. Each entry requires a relative website path. With one imageFiles attachment, path alone uses that attachment. Otherwise select exactly one source: fileIndex (zero-based imageFiles position), a known fileId, or a fetchable HTTP(S) sourceUrl. Never guess generated file IDs. Existing images are preserved when omitted; replacing an existing path does not use another slot. Base64 bytes and data URLs are unsupported.'}, 'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to update'}, 'imageFiles': {'type': 'array', 'items': {'type': 'object', 'required': ['download_url', 'file_id'], 'properties': {'file_id': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'file_name': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'mime_type': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'download_url': {'type': 'string', 'maxLength': 4096, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': "Optional image attachments supplied through the host's file upload support. The host supplies file_id and download_url. Map each attachment to a website path in assets: with one attachment, path alone is sufficient; with multiple attachments, use fileIndex. The assistant does not need to know generated file IDs or download URLs. Temporary URLs are import sources, not hosted image URLs. Clients without file input support can omit this field."}, 'removeAssetPaths': {'type': 'array', 'items': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'maxItems': 20, 'description': 'Optional relative asset paths to remove from the page asset bundle.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'code': {'type': 'string'}, 'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'status': {'enum': ['requires_adaptation', 'requires_entitlement', 'unsupported', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}, 'guidance': {'type': 'object', 'additionalProperties': {}}, 'shareUrl': {'type': 'string', 'description': 'Primary share URL'}, 'assetUrls': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'assetUrl'], 'properties': {'path': {'type': 'string', 'description': 'Relative asset path'}, 'assetUrl': {'type': 'string', 'description': 'Relative URL where the page serves this asset'}}, 'additionalProperties': False}, 'description': 'URLs for added or replaced assets'}, 'updatedAt': {'type': 'string', 'description': 'ISO-8601 update timestamp'}, 'currentVersionNumber': {'type': 'number'}, 'publicationPerformed': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'minimum': 0}, 'workspaceId': {'type': 'string', 'pattern': '^ws_[A-Za-z0-9]+$', 'description': 'Optional exact workspaceId of the Carryo team selected by the user. Lists Personal websites when omitted.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifacts', 'total', 'limit', 'offset', 'workspaces'], 'properties': {'limit': {'type': 'number', 'description': 'Pagination limit used by the response'}, 'total': {'type': 'number', 'description': 'Total page count before pagination'}, 'offset': {'type': 'number', 'description': 'Pagination offset used by the response'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'required': ['linkId', 'fileName', 'publicationState', 'accessMode', 'isRevoked'], 'properties': {'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'fileName': {'type': 'string', 'description': 'Page file name'}, 'policies': {'type': 'object', 'required': ['updatesPerLink', 'inactivityWindowDays', 'canReactivate'], 'properties': {'canReactivate': {'type': 'boolean', 'description': 'Whether restoration is currently supported in Carryo, subject to available capacity'}, 'updatesPerLink': {'type': ['number', 'null'], 'description': 'This website’s update limit; null means unlimited subject to fair use'}, 'inactivityRevokesAt': {'$ref': '#/properties/workspaceId', 'description': 'Inactivity deadline; a separately set expiresAt can take the website offline earlier'}, 'inactivityWindowDays': {'type': ['number', 'null'], 'description': 'Days since this website’s last owner edit or Keep live action; null means no inactivity expiry. Views and sign-in do not renew it'}}, 'description': 'Actual per-website policy; use this instead of Personal account defaults', 'additionalProperties': False}, 'shareUrl': {'$ref': '#/properties/workspaceId', 'description': 'Primary share URL, omitted for private drafts'}, 'expiresAt': {'$ref': '#/properties/workspaceId', 'description': 'Optional ISO-8601 expiration timestamp'}, 'isRevoked': {'type': 'boolean', 'description': 'Whether the share link has been revoked'}, 'manageUrl': {'$ref': '#/properties/workspaceId', 'description': 'Carryo management URL for private drafts'}, 'accessMode': {'enum': ['public', 'restricted'], 'type': 'string', 'description': 'Whether the page is public or restricted'}, 'customSlug': {'$ref': '#/properties/workspaceId', 'description': 'Optional custom URL ending'}, 'publicationState': {'enum': ['draft', 'published'], 'type': 'string', 'description': 'Whether the page is a private draft or published'}, 'alternateShareUrls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Alternate share URLs, when available'}}, 'additionalProperties': False}, 'description': 'Carryo pages owned by the authenticated user'}, 'workspaces': {'type': 'array', 'items': {'type': 'object', 'required': ['workspaceId', 'workspaceName', 'role', 'capabilities'], 'properties': {'role': {'enum': ['owner', 'editor'], 'type': 'string', 'description': 'The authenticated user role in this workspace'}, 'workspaceId': {'type': 'string', 'description': 'Stable Carryo workspace identifier to use in later tool calls'}, 'capabilities': {'type': 'object', 'required': ['canListLinks', 'canPublishLinks', 'canUpdateLinks', 'canRevokeLinks'], 'properties': {'canListLinks': {'type': 'boolean', 'description': 'Whether workspace links can be listed'}, 'canRevokeLinks': {'type': 'boolean', 'description': 'Whether workspace links can be revoked'}, 'canUpdateLinks': {'type': 'boolean', 'description': 'Whether workspace links can be updated'}, 'canPublishLinks': {'type': 'boolean', 'description': 'Whether new workspace links can be published'}}, 'description': 'Workspace actions currently available to the authenticated user', 'additionalProperties': False}, 'workspaceName': {'type': 'string', 'description': 'User-facing Carryo workspace name'}}, 'additionalProperties': False}, 'description': 'Carryo workspaces the authenticated user can access'}, 'workspaceId': {'type': ['string', 'null'], 'description': 'Workspace whose links were listed; omitted for Personal'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'minimum': 0}, 'workspaceId': {'type': 'string', 'pattern': '^ws_[A-Za-z0-9]+$', 'description': 'Optional exact workspaceId of the Carryo team selected by the user. Lists Personal websites when omitted.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifacts', 'total', 'limit', 'offset'], 'properties': {'limit': {'type': 'number', 'description': 'Pagination limit used by the response'}, 'total': {'type': 'number', 'description': 'Total page count before pagination'}, 'offset': {'type': 'number', 'description': 'Pagination offset used by the response'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'required': ['linkId', 'fileName', 'publicationState', 'accessMode', 'isRevoked'], 'properties': {'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'fileName': {'type': 'string', 'description': 'Page file name'}, 'policies': {'type': 'object', 'required': ['updatesPerLink', 'inactivityWindowDays', 'canReactivate'], 'properties': {'canReactivate': {'type': 'boolean', 'description': 'Whether restoration is currently supported in Carryo, subject to available capacity'}, 'updatesPerLink': {'type': ['number', 'null'], 'description': 'This website’s update limit; null means unlimited subject to fair use'}, 'inactivityRevokesAt': {'$ref': '#/properties/workspaceId', 'description': 'Inactivity deadline; a separately set expiresAt can take the website offline earlier'}, 'inactivityWindowDays': {'type': ['number', 'null'], 'description': 'Days since this website’s last owner edit or Keep live action; null means no inactivity expiry. Views and sign-in do not renew it'}}, 'description': 'Actual per-website policy; use this instead of Personal account defaults', 'additionalProperties': False}, 'shareUrl': {'$ref': '#/properties/workspaceId', 'description': 'Primary share URL, omitted for private drafts'}, 'expiresAt': {'$ref': '#/properties/workspaceId', 'description': 'Optional ISO-8601 expiration timestamp'}, 'isRevoked': {'type': 'boolean', 'description': 'Whether the share link has been revoked'}, 'manageUrl': {'$ref': '#/properties/workspaceId', 'description': 'Carryo management URL for private drafts'}, 'accessMode': {'enum': ['public', 'restricted'], 'type': 'string', 'description': 'Whether the page is public or restricted'}, 'customSlug': {'$ref': '#/properties/workspaceId', 'description': 'Optional custom URL ending'}, 'publicationState': {'enum': ['draft', 'published'], 'type': 'string', 'description': 'Whether the page is a private draft or published'}, 'alternateShareUrls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Alternate share URLs, when available'}}, 'additionalProperties': False}, 'description': 'Carryo pages owned by the authenticated user'}, 'workspaceId': {'type': ['string', 'null'], 'description': 'Workspace whose links were listed; omitted for Personal'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId'], 'properties': {'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to inspect'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'currentVersionNumber', 'versions'], 'properties': {'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'versions': {'type': 'array', 'items': {'type': 'object', 'required': ['linkId', 'versionNumber', 'eventType', 'createdAt', 'fileName', 'accessMode', 'sizeBytes', 'assetCount', 'assetBytes', 'assetChanges', 'isCurrent'], 'properties': {'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'fileName': {'type': 'string', 'description': 'Page file name for this version'}, 'createdAt': {'type': 'string', 'description': 'ISO-8601 timestamp when this version was created'}, 'eventType': {'enum': ['created', 'updated', 'legacy_current'], 'type': 'string', 'description': 'Version event type'}, 'isCurrent': {'type': 'boolean', 'description': 'Whether this is the page current version'}, 'sizeBytes': {'type': 'number', 'description': 'HTML content size in bytes'}, 'accessMode': {'enum': ['public', 'restricted'], 'type': 'string', 'description': 'Whether the version was public or restricted'}, 'assetBytes': {'type': 'number', 'description': 'Total bundled asset size in bytes'}, 'assetCount': {'type': 'number', 'description': 'Number of bundled assets in this version'}, 'assetChanges': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'action'], 'properties': {'path': {'type': 'string', 'description': 'Relative asset path that changed'}, 'action': {'enum': ['added', 'updated', 'removed', 'retained'], 'type': 'string', 'description': 'Asset change type'}, 'sizeBytes': {'type': ['number', 'null'], 'description': 'Current asset size in bytes'}, 'contentType': {'type': ['string', 'null'], 'description': 'Optional MIME type for the asset'}, 'previousSizeBytes': {'type': ['number', 'null'], 'description': 'Previous asset size in bytes'}}, 'additionalProperties': False}, 'description': 'Asset changes in this version'}, 'changeSummary': {'$ref': '#/properties/versions/items/properties/assetChanges/items/properties/contentType', 'description': 'Optional human-readable version change summary'}, 'versionNumber': {'type': 'number', 'description': 'Page version number'}}, 'additionalProperties': False}, 'description': 'Page version history'}, 'currentVersionNumber': {'type': 'number', 'description': 'Current page version number'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['htmlContent', 'fileName', 'sharingMode'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'notifyOwner': {'type': 'boolean'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 5, 'description': 'Optional definitions for JavaScript/React forms using window.CarryoForms.submit(key, values), which resolves on acceptance and rejects on failure. Stable keys and field names identify forms across edits. Static collection forms are inferred from data-carryo-form="key" and named controls without duplicate definitions; placeholder submit handlers can block collection. Local calculator/filter forms use data-carryo-local and do not collect responses. Existing external endpoints retain their destination. Visitor acknowledgement is disabled unless explicitly enabled.'}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'fileId': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Known attachment file_id matching an imageFiles entry. Prefer fileIndex if the host-generated ID is not visible. Mutually exclusive with fileIndex and sourceUrl.'}, 'fileIndex': {'type': 'integer', 'maximum': 19, 'minimum': 0, 'description': 'Zero-based position in imageFiles: 0 selects its first attachment. Use this when the host generates file IDs during upload. May be omitted when imageFiles contains exactly one attachment. Mutually exclusive with fileId and sourceUrl.'}, 'sourceUrl': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Fetchable HTTP(S) image URL for Carryo to import and host. Mutually exclusive with fileId and fileIndex. Data URLs and base64 bytes are unsupported.'}, 'contentType': {'type': 'string', 'maxLength': 255, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional image assets to add or replace. Each entry requires a relative website path. With one imageFiles attachment, path alone uses that attachment. Otherwise select exactly one source: fileIndex (zero-based imageFiles position), a known fileId, or a fetchable HTTP(S) sourceUrl. Never guess generated file IDs. Existing images are preserved when omitted; replacing an existing path does not use another slot. Base64 bytes and data URLs are unsupported.'}, 'fileName': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Short internal file name, for example client-proposal.html, board-deck.html, report.html, or landing-page.html.'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO-8601 expiration timestamp'}, 'customSlug': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Optional user-chosen URL ending using lowercase letters, numbers, and hyphens. An automatic URL is generated when omitted.'}, 'imageFiles': {'type': 'array', 'items': {'type': 'object', 'required': ['download_url', 'file_id'], 'properties': {'file_id': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'file_name': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'mime_type': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'download_url': {'type': 'string', 'maxLength': 4096, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': "Optional image attachments supplied through the host's file upload support. The host supplies file_id and download_url. Map each attachment to a website path in assets: with one attachment, path alone is sufficient; with multiple attachments, use fileIndex. The assistant does not need to know generated file IDs or download URLs. Temporary URLs are import sources, not hosted image URLs. Clients without file input support can omit this field."}, 'htmlContent': {'type': 'string', 'maxLength': 5242880, 'minLength': 1, 'description': 'Complete HTML for the page, presentation, slide deck, proposal, report, landing page, dashboard, invitation, portfolio, or one-page website to publish.'}, 'sharingMode': {'enum': ['public'], 'type': 'string', 'description': 'Publishing mode for the Carryo page. Only public live links are supported here.'}, 'workspaceId': {'type': 'string', 'pattern': '^ws_[A-Za-z0-9]+$', 'description': 'Optional exact workspaceId of the Carryo team explicitly selected by the user. The default destination is Personal when omitted.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'code': {'type': 'string'}, 'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'status': {'enum': ['requires_adaptation', 'requires_entitlement', 'unsupported', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}, 'guidance': {'type': 'object', 'additionalProperties': {}}, 'shareUrl': {'type': 'string', 'description': 'Primary share URL'}, 'expiresAt': {'$ref': '#/properties/customSlug', 'description': 'Optional ISO-8601 expiration timestamp'}, 'manageUrl': {'$ref': '#/properties/customSlug', 'description': 'Carryo web-app URL for managing the link URL, password, views, and edit history'}, 'customSlug': {'type': ['string', 'null'], 'description': 'Optional custom URL ending'}, 'workspaceId': {'$ref': '#/properties/customSlug', 'description': 'Workspace that owns the link; omitted for Personal'}, 'alternateShareUrls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Alternate share URLs, when available'}, 'currentVersionNumber': {'type': 'number'}, 'publicationPerformed': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId'], 'properties': {'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to read'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'htmlContent'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'contentType', 'sizeBytes'], 'properties': {'path': {'type': 'string', 'description': 'Relative asset path in the page asset bundle'}, 'sizeBytes': {'type': 'number', 'description': 'Asset size in bytes'}, 'contentType': {'type': 'string', 'description': 'Asset MIME type'}}, 'additionalProperties': False}, 'description': 'Bundled asset descriptors'}, 'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'htmlContent': {'type': 'string', 'description': 'Current HTML content for the page'}, 'imageLimits': {'type': 'object', 'required': ['maxImages', 'usedImages', 'remainingImages'], 'properties': {'maxImages': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'usedImages': {'type': 'integer', 'minimum': 0}, 'remainingImages': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'description': 'Hosted-image allowance for this website. Null counts mean no plan-specific cap. Existing images above a reduced limit can be kept or replaced, but the count cannot increase.', 'additionalProperties': False}, 'currentVersionNumber': {'type': 'number'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId'], 'properties': {'mode': {'enum': ['summary', 'responses'], 'type': 'string'}, 'after': {'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'before': {'type': 'string'}, 'cursor': {'type': 'string', 'maxLength': 100}, 'fields': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64}, 'maxItems': 30}, 'linkId': {'type': 'string', 'maxLength': 16, 'minLength': 16}, 'formKey': {'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'total', 'forms', 'untrustedContent'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'total': {'type': 'number'}, 'linkId': {'type': 'string'}, 'responses': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'formKey', 'createdAt', 'expiresAt', 'values'], 'properties': {'id': {'type': 'string'}, 'values': {'type': 'object', 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'formKey': {'type': 'string'}, 'createdAt': {'type': 'string'}, 'expiresAt': {'type': 'string'}}, 'additionalProperties': False}}, 'nextCursor': {'type': 'string'}, 'untrustedContent': {'type': 'boolean', 'const': True}, 'notificationCounts': {'type': 'object', 'required': ['pending', 'sent', 'failed', 'uncertain'], 'properties': {'sent': {'type': 'number'}, 'failed': {'type': 'number'}, 'pending': {'type': 'number'}, 'uncertain': {'type': 'number'}}, 'description': 'Email job counts; sent means accepted by the provider, not confirmed inbox delivery', 'additionalProperties': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'versionNumber'], 'properties': {'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to read'}, 'versionNumber': {'type': 'integer', 'description': 'Specific page version number to read', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'versionNumber', 'htmlContent'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'notifyOwner': {'type': 'boolean'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Form definitions belonging to this historical version, for comparison or restoration; not its current collection state'}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'contentType', 'sizeBytes'], 'properties': {'path': {'type': 'string', 'description': 'Relative asset path in the page asset bundle'}, 'sizeBytes': {'type': 'number', 'description': 'Asset size in bytes'}, 'contentType': {'type': 'string', 'description': 'Asset MIME type'}}, 'additionalProperties': False}, 'description': 'Bundled asset descriptors'}, 'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'htmlContent': {'type': 'string', 'description': 'HTML content for the requested historical version'}, 'versionNumber': {'type': 'number', 'description': 'Page version number'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['htmlContent', 'fileName'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'notifyOwner': {'type': 'boolean'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 5, 'description': 'Optional definitions for JavaScript/React forms using window.CarryoForms.submit(key, values), which resolves on acceptance and rejects on failure. Stable keys and field names identify forms across edits. Static collection forms are inferred from data-carryo-form="key" and named controls without duplicate definitions; placeholder submit handlers can block collection. Local calculator/filter forms use data-carryo-local and do not collect responses. Existing external endpoints retain their destination. Visitor acknowledgement is disabled unless explicitly enabled.'}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'fileId': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Known attachment file_id matching an imageFiles entry. Prefer fileIndex if the host-generated ID is not visible. Mutually exclusive with fileIndex and sourceUrl.'}, 'fileIndex': {'type': 'integer', 'maximum': 19, 'minimum': 0, 'description': 'Zero-based position in imageFiles: 0 selects its first attachment. Use this when the host generates file IDs during upload. May be omitted when imageFiles contains exactly one attachment. Mutually exclusive with fileId and sourceUrl.'}, 'sourceUrl': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Fetchable HTTP(S) image URL for Carryo to import and host. Mutually exclusive with fileId and fileIndex. Data URLs and base64 bytes are unsupported.'}, 'contentType': {'type': 'string', 'maxLength': 255, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional image assets to add or replace. Each entry requires a relative website path. With one imageFiles attachment, path alone uses that attachment. Otherwise select exactly one source: fileIndex (zero-based imageFiles position), a known fileId, or a fetchable HTTP(S) sourceUrl. Never guess generated file IDs. Existing images are preserved when omitted; replacing an existing path does not use another slot. Base64 bytes and data URLs are unsupported.'}, 'fileName': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Short internal file name, for example client-proposal.html, board-deck.html, report.html, or landing-page.html.'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO-8601 expiration timestamp'}, 'customSlug': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Optional user-chosen URL ending using lowercase letters, numbers, and hyphens. An automatic URL is generated when omitted.'}, 'imageFiles': {'type': 'array', 'items': {'type': 'object', 'required': ['download_url', 'file_id'], 'properties': {'file_id': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'file_name': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'mime_type': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'download_url': {'type': 'string', 'maxLength': 4096, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': "Optional image attachments supplied through the host's file upload support. The host supplies file_id and download_url. Map each attachment to a website path in assets: with one attachment, path alone is sufficient; with multiple attachments, use fileIndex. The assistant does not need to know generated file IDs or download URLs. Temporary URLs are import sources, not hosted image URLs. Clients without file input support can omit this field."}, 'htmlContent': {'type': 'string', 'maxLength': 5242880, 'minLength': 1, 'description': 'Complete HTML for the private Carryo draft page, presentation, slide deck, proposal, report, landing page, dashboard, invitation, portfolio, or one-page website.'}, 'workspaceId': {'type': 'string', 'pattern': '^ws_[A-Za-z0-9]+$', 'description': 'Optional exact workspaceId of the Carryo team explicitly selected by the user. The default destination is Personal when omitted.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'code': {'type': 'string'}, 'forms': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'fields', 'revision', 'state', 'retentionDays', 'notifications'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'state': {'enum': ['active', 'draft', 'closed', 'unavailable'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'closed': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'label', 'type'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z][a-z0-9_-]{0,63}$'}, 'type': {'enum': ['text', 'email', 'tel', 'number', 'date', 'textarea', 'select', 'checkbox', 'radio'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1}, 'required': {'type': 'boolean'}, 'maxLength': {'type': 'integer', 'maximum': 3000, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1}, 'revision': {'type': 'number'}, 'notifyOwner': {'type': 'boolean'}, 'notifications': {'enum': ['enabled', 'disabled', 'unavailable'], 'type': 'string'}, 'retentionDays': {'type': 'number'}, 'acknowledgementEmailField': {'type': 'string'}}, 'additionalProperties': False}}, 'status': {'enum': ['requires_adaptation', 'requires_entitlement', 'unsupported', 'unavailable'], 'type': 'string'}, 'draftId': {'type': 'string', 'description': 'Carryo private draft identifier'}, 'message': {'type': 'string'}, 'guidance': {'type': 'object', 'additionalProperties': {}}, 'expiresAt': {'$ref': '#/properties/workspaceId', 'description': 'Optional ISO-8601 expiration timestamp'}, 'manageUrl': {'type': 'string', 'description': 'Carryo URL where the user can review access settings and publish the draft'}, 'workspaceId': {'type': ['string', 'null'], 'description': 'Workspace that owns the draft; omitted for Personal'}, 'currentVersionNumber': {'type': 'number'}, 'publicationPerformed': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId'], 'properties': {'linkId': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Carryo page link identifier to take offline'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linkId', 'revokedAt', 'deleteAt'], 'properties': {'linkId': {'type': 'string', 'description': 'Carryo page link identifier'}, 'deleteAt': {'type': 'string', 'description': 'ISO-8601 deletion timestamp'}, 'revokedAt': {'type': 'string', 'description': 'ISO-8601 revocation timestamp'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
ai-content-drop
Generates AI images, videos, UGC clips, avatars, and finished ads, while organizing creative assets and campaign boards.
Picorn
Creates and edits layered social images, videos, slideshows, vector assets, and marketing projects with persistent editable canva…
Orisu
Creates image, video, and advertising workflows with brand kits and shareable outputs.
lamina
Generates on-brand product photos, model try-ons, video reels, and banners from briefs and brand kits.
Meepo Studio
Enables creating designs, social carousels, videos, and marketing campaigns from an AI agent.
Bloopo — AI Ad & Creative Studio
Creates advertising assets including video ads, UGC, product images, voiceovers, brand kits, and A/B variants.
Morphed
Creates AI-generated images and videos while managing projects, credits, and campaign context.
Hermoso
Supports ad research, competitor analysis, video and static ad creation, campaign policy checks, content publishing, and performa…