Publora
Was dieses MCP kann
Creates, schedules, publishes, edits, and monitors posts across connected social media platforms, including media uploads and LinkedIn engagement actions.
Tools
Eingabeschema
{'type': 'object', 'required': ['postGroupId', 'file'], 'properties': {'file': {'type': 'object', 'required': ['download_url', 'file_id'], 'properties': {'file_id': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Stable file ID supplied by ChatGPT'}, 'file_name': {'type': 'string', 'description': 'Optional original file name supplied by ChatGPT'}, 'mime_type': {'type': 'string', 'description': 'Optional MIME hint; Publora validates the actual bytes'}, 'download_url': {'type': 'string', 'minLength': 1, 'description': 'Temporary HTTPS download URL supplied by ChatGPT'}}, 'additionalProperties': False}, 'fileName': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Optional descriptive file name with extension, e.g. temporary-lpn-jobs-connecticut.png; overrides file.file_name. The basename is sanitized for storage.'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Existing post group ID; create a draft first if needed'}, 'idempotencyKey': {'type': 'string', 'minLength': 1, 'description': 'Optional explicit retry key. Defaults to a stable key for this post and file ID. Reuse the same key, file ID and file name when retrying; the download URL may change.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'accountId'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'action': {'type': 'string', 'const': 'list'}, 'cursor': {'type': 'string'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'list'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'link'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'connectionId'], 'properties': {'action': {'type': 'string', 'const': 'tiktok_creator_info'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'connectionId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action'], 'properties': {'action': {'type': 'string', 'const': 'list'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'workspace'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action'], 'properties': {'action': {'type': 'string', 'const': 'platforms'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'generate_link'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'rotate_link'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'revoke_link'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'connectionId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'disconnect'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'connectionId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'accountId', 'email', 'accountRole', 'workspaceGrants'], '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,}$"}, 'action': {'type': 'string', 'const': 'invite'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'accountRole': {'enum': ['admin', 'member'], 'type': 'string'}, 'workspaceGrants': {'type': 'array', 'items': {'type': 'object', 'required': ['workspaceId', 'roleSlug'], 'properties': {'roleSlug': {'enum': ['manager', 'publisher', 'contributor', 'viewer'], 'type': 'string'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'token'], 'properties': {'token': {'type': 'string', 'pattern': '^[a-fA-F0-9]{64}$', 'description': 'Private token from the invitation; sent only in JSON, never a URL'}, 'action': {'type': 'string', 'const': 'accept'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'invitationId'], 'properties': {'action': {'type': 'string', 'const': 'resend'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'invitationId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'invitationId'], 'properties': {'action': {'type': 'string', 'const': 'revoke'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'invitationId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'workspaceId', 'membershipId', 'expectedVersion', 'roleSlug'], 'properties': {'action': {'type': 'string', 'const': 'set_grant'}, 'roleSlug': {'anyOf': [{'enum': ['manager', 'publisher', 'contributor', 'viewer'], 'type': 'string'}, {'type': 'null'}]}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'membershipId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'expectedVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Current membership version from company_team; refresh after a conflict'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'membershipId', 'expectedVersion'], 'properties': {'action': {'type': 'string', 'const': 'offboard'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'membershipId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'expectedVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Current membership version from company_team; refresh after a conflict'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey', 'fileName', 'contentType', 'sizeBytes'], 'properties': {'type': {'enum': ['image', 'video', 'document'], 'type': 'string'}, 'action': {'type': 'string', 'const': 'reserve'}, 'fileName': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'contentType': {'type': 'string', 'minLength': 1}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'mediaFileId'], 'properties': {'action': {'type': 'string', 'const': 'complete'}, 'mediaFileId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'mediaFileId'], 'properties': {'action': {'type': 'string', 'const': 'delete'}, 'mediaFileId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey', 'scheduledTime'], 'properties': {'action': {'type': 'string', 'const': 'schedule'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'scheduledTime': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Exact UTC ISO instant, e.g. 2026-09-11T12:00:00.000Z. To publish now use the current time and retain it unchanged on retry'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey', 'scheduledTime'], 'properties': {'action': {'type': 'string', 'const': 'reschedule'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'scheduledTime': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Exact UTC ISO instant, e.g. 2026-09-11T12:00:00.000Z. To publish now use the current time and retain it unchanged on retry'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'unschedule'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'delete'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'recover'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'request'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}, 'managerComment': {'type': 'string', 'maxLength': 5000, 'description': 'Optional saved-post review instructions for the client, at most 5000 characters'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'cancel'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId'], 'properties': {'action': {'type': 'string', 'const': 'retry_notification'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'action': {'type': 'string', 'const': 'list'}, 'cursor': {'type': 'string', 'description': 'Opaque nextCursor from the previous page; keep every other filter unchanged'}, 'statuses': {'type': 'array', 'items': {'enum': ['draft', 'scheduled', 'published', 'failed', 'partially_published'], 'type': 'string'}, 'minItems': 1}, 'channelKey': {'type': 'string', 'description': 'Exact channel key from company_channels, not the connection database ID'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'approvalStatus': {'enum': ['none', 'pending', 'approved', 'changes_requested', 'outdated'], 'type': 'string', 'description': 'Filter by the current client approval state, independently of publishing status'}, 'includeApproval': {'type': 'boolean', 'description': 'Opt in to client approval fields; omitted by default for compatibility'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'summary'}, 'channelKey': {'type': 'string', 'description': 'Exact channel key from company_channels, not the connection database ID'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'from', 'to'], 'properties': {'to': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Exact UTC ISO instant, e.g. 2026-09-11T12:00:00.000Z. To publish now use the current time and retain it unchanged on retry'}, 'from': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Exact UTC ISO instant, e.g. 2026-09-11T12:00:00.000Z. To publish now use the current time and retain it unchanged on retry'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'action': {'type': 'string', 'const': 'calendar'}, 'cursor': {'type': 'string', 'description': 'Opaque nextCursor from the previous page; keep every other filter unchanged'}, 'statuses': {'type': 'array', 'items': {'enum': ['draft', 'scheduled', 'published', 'failed', 'partially_published'], 'type': 'string'}, 'minItems': 1}, 'channelKey': {'type': 'string', 'description': 'Exact channel key from company_channels, not the connection database ID'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'approvalStatus': {'enum': ['none', 'pending', 'approved', 'changes_requested', 'outdated'], 'type': 'string', 'description': 'Filter by the current client approval state, independently of publishing status'}, 'includeApproval': {'type': 'boolean', 'description': 'Opt in to client approval fields; omitted by default for compatibility'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId'], 'properties': {'action': {'type': 'string', 'const': 'detail'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'includeApproval': {'type': 'boolean', 'description': 'Opt in to client approval fields; omitted by default for compatibility'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId'], 'properties': {'action': {'type': 'string', 'const': 'media'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId'], 'properties': {'action': {'type': 'string', 'const': 'approval'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'workspaceId', 'idempotencyKey', 'draft'], 'properties': {'draft': {'type': 'object', 'properties': {'notes': {'type': 'string', 'maxLength': 10000}, 'topic': {'type': 'string', 'maxLength': 500}, 'content': {'type': 'string', 'maxLength': 100000}, 'platforms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 300}, 'maxItems': 20, 'description': 'Exact keys from company_channels; [] allows a channel-less draft'}, 'sameContent': {'type': 'boolean'}, 'firstComment': {'anyOf': [{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': "Comment text. Backend checks the absolute 25,000-character cap and each selected platform's length rules"}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': 'Optional platform types, not channel keys; omit for all supported targets'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'One first comment under each supported Agency post target; null clears it. Supported: linkedin (profiles and Pages), twitter, threads, bluesky, mastodon; other targets are skipped. No firstComments array for Agency posts.'}, 'videoTimestamp': {'type': 'number', 'maximum': 86400, 'minimum': 0}, 'platformContents': {'type': 'object', 'description': 'Selected channel key → {content,isBase}; no unselected keys', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['content', 'isBase'], 'properties': {'isBase': {'type': 'boolean'}, 'content': {'type': 'string', 'maxLength': 100000}}, 'additionalProperties': False}}, 'platformSettings': {'type': 'object', 'properties': {'tiktok': {'type': 'object', 'properties': {'allowDuet': {'type': 'boolean'}, 'allowStitch': {'type': 'boolean'}, 'allowComments': {'type': 'boolean'}, 'viewerSetting': {'enum': ['PUBLIC_TO_EVERYONE', 'MUTUAL_FOLLOW_FRIENDS', 'FOLLOWER_OF_CREATOR', 'SELF_ONLY'], 'type': 'string'}}, 'additionalProperties': False}, 'youtube': {'type': 'object', 'properties': {'title': {'type': 'string', 'maxLength': 100}, 'privacy': {'enum': ['private', 'public', 'unlisted'], 'type': 'string'}, 'madeForKids': {'type': 'boolean'}}, 'additionalProperties': False}, 'telegram': {'type': 'object', 'properties': {'protectContent': {'type': 'boolean'}, 'disableNotification': {'type': 'boolean'}, 'disableWebPagePreview': {'type': 'boolean'}}, 'additionalProperties': False}, 'instagram': {'type': 'object', 'properties': {'videoType': {'type': 'string', 'const': 'REELS'}}, 'additionalProperties': False}}, 'description': 'Company settings only; call company_context action platforms for current format rules. TikTok viewerSetting is required to publish', 'additionalProperties': False}, 'threadingSettings': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'isPlatformSpecific': {'type': 'boolean', 'description': 'If supplied, also supply sameContent with the opposite boolean'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'create'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'workspaceId', 'postGroupId', 'idempotencyKey', 'draft'], 'properties': {'draft': {'type': 'object', 'properties': {'notes': {'type': 'string', 'maxLength': 10000}, 'topic': {'type': 'string', 'maxLength': 500}, 'content': {'type': 'string', 'maxLength': 100000}, 'platforms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 300}, 'maxItems': 20, 'description': 'Exact keys from company_channels; [] allows a channel-less draft'}, 'sameContent': {'type': 'boolean'}, 'firstComment': {'anyOf': [{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': "Comment text. Backend checks the absolute 25,000-character cap and each selected platform's length rules"}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': 'Optional platform types, not channel keys; omit for all supported targets'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'One first comment under each supported Agency post target; null clears it. Supported: linkedin (profiles and Pages), twitter, threads, bluesky, mastodon; other targets are skipped. No firstComments array for Agency posts.'}, 'videoTimestamp': {'type': 'number', 'maximum': 86400, 'minimum': 0}, 'platformContents': {'type': 'object', 'description': 'Selected channel key → {content,isBase}; no unselected keys', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['content', 'isBase'], 'properties': {'isBase': {'type': 'boolean'}, 'content': {'type': 'string', 'maxLength': 100000}}, 'additionalProperties': False}}, 'platformSettings': {'type': 'object', 'properties': {'tiktok': {'type': 'object', 'properties': {'allowDuet': {'type': 'boolean'}, 'allowStitch': {'type': 'boolean'}, 'allowComments': {'type': 'boolean'}, 'viewerSetting': {'enum': ['PUBLIC_TO_EVERYONE', 'MUTUAL_FOLLOW_FRIENDS', 'FOLLOWER_OF_CREATOR', 'SELF_ONLY'], 'type': 'string'}}, 'additionalProperties': False}, 'youtube': {'type': 'object', 'properties': {'title': {'type': 'string', 'maxLength': 100}, 'privacy': {'enum': ['private', 'public', 'unlisted'], 'type': 'string'}, 'madeForKids': {'type': 'boolean'}}, 'additionalProperties': False}, 'telegram': {'type': 'object', 'properties': {'protectContent': {'type': 'boolean'}, 'disableNotification': {'type': 'boolean'}, 'disableWebPagePreview': {'type': 'boolean'}}, 'additionalProperties': False}, 'instagram': {'type': 'object', 'properties': {'videoType': {'type': 'string', 'const': 'REELS'}}, 'additionalProperties': False}}, 'description': 'Company settings only; call company_context action platforms for current format rules. TikTok viewerSetting is required to publish', 'additionalProperties': False}, 'threadingSettings': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'isPlatformSpecific': {'type': 'boolean', 'description': 'If supplied, also supply sameContent with the opposite boolean'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'update'}, 'postGroupId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'accountId'], 'properties': {'action': {'type': 'string', 'const': 'list'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'includeWorkspaceGrantEditing': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'workspaceId'], 'properties': {'action': {'type': 'string', 'const': 'workspace_members'}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['action', 'accountId', 'name', 'reason', 'expectedCommandVersion', 'idempotencyKey'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'action': {'type': 'string', 'const': 'create'}, 'reason': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}, 'expectedCommandVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Current commandVersion from company_context; Account version for create, Workspace version for rename/archive'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'workspaceId', 'name', 'reason', 'expectedCommandVersion', 'idempotencyKey'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'action': {'type': 'string', 'const': 'rename'}, 'reason': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}, 'expectedCommandVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Current commandVersion from company_context; Account version for create, Workspace version for rename/archive'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'accountId', 'workspaceId', 'reason', 'expectedCommandVersion', 'idempotencyKey'], 'properties': {'action': {'type': 'string', 'const': 'archive'}, 'reason': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'accountId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'workspaceId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Exact ID returned by a Company tool; never a personal platformId'}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x21-\\x2B\\x2D-\\x7E]{1,255}$', 'description': 'Stable visible-ASCII key, 1–255 characters, no comma/whitespace. On lost response retry the IDENTICAL body and key; never mint a new key'}, 'expectedCommandVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Current commandVersion from company_context; Account version for create, Workspace version for rename/archive'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['mediaId'], 'properties': {'mediaId': {'type': 'string', 'description': 'MediaFile ID returned by get_upload_url'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['content', 'platforms'], 'properties': {'content': {'type': 'string', 'description': 'Post text content. On X and Threads, long content auto-splits into a chain; a standalone --- line between paragraphs sets a break, and media attach only to the first part. Threads parts are limited to 500 characters; the connection needs threads_manage_replies, and THREADS_PERMISSION_REQUIRED means reconnect in Publora Channels. Thread part and numbering settings are not API/MCP inputs. After partial publication, inspect get_post and never recreate or resubmit the whole chain. For an unknown outcome, check the live account before further action.'}, 'mediaUrls': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional array (max 10) of public https URLs of images/videos to attach. Downloaded and validated server-side (jpeg, png, gif, webp, tiff, avif, mp4, mov, webm; images ≤25MB, videos ≤150MB). Must be DIRECT file URLs — share-page links (Google Drive, Dropbox pages) will fail.'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}, 'description': "Array of platform identifiers in the exact format returned by list_connections. Each value must be the 'platformId' field copied verbatim from a connection object, e.g. ['twitter-1985855679454986200', 'linkedin-abc123']. IMPORTANT: Do NOT invent or guess IDs — always call list_connections first and use the exact platformId values. Exception: 'publora-playground' is a connection-test target that requires no real connection — the post is acknowledged and discarded, nothing is published; when used it must be the ONLY entry."}, 'firstComment': {'anyOf': [{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text, posted as-is. Measured the way each platform counts: X 280 (25000 on Premium; URLs count 23), LinkedIn 1250, Threads 500, Bluesky 300 graphemes / 3000 bytes, Mastodon 500 (links count 23).'}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': "Optional platform TYPES to restrict the comment to, e.g. ['linkedin', 'threads'] — NOT connection keys. Omit to comment on every supported target."}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Legacy single first comment under your own post. Supported: linkedin (profiles and Pages), twitter, threads, bluesky, mastodon; other targets are skipped. Best effort: read firstCommentResult via get_post. Cannot be combined with firstComments or added after publishing.'}, 'firstComments': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text, posted as-is. Measured the way each platform counts: X 280 (25000 on Premium; URLs count 23), LinkedIn 1250, Threads 500, Bluesky 300 graphemes / 3000 bytes, Mastodon 500 (links count 23).'}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': "Optional platform TYPES to restrict the comment to, e.g. ['linkedin', 'threads'] — NOT connection keys. Omit to comment on every supported target."}, 'delaySeconds': {'type': 'integer', 'maximum': 86400, 'minimum': 0, 'description': 'Delay after the previous comment (or publication for item 0), in seconds. Omit for 0; actual delivery is within one scheduler tick.'}}, 'additionalProperties': False}, 'maxItems': 3}, {'type': 'null'}], 'description': 'Up to 3 ordered first comments under your own post, each { text, platforms?, delaySeconds? }. delaySeconds is an integer 0–86400; omitted means 0. The next comment runs only after the previous one posts, on a scheduler tick; a failed comment stops later ones. Platform types (not connection keys) and text limits follow firstComment. Best effort, no blind retries. Read per-target firstCommentResults via get_post. Cannot be combined with firstComment or added after publishing.'}, 'scheduledTime': {'type': 'string', 'description': "Optional ISO 8601 datetime for publishing, e.g. '2025-03-01T12:00:00Z'. Omit to create a draft. Scheduling a media-requiring platform without media fails validation — pass mediaUrls in the same call to avoid that."}, 'idempotencyKey': {'type': 'string', 'minLength': 1, 'description': 'Optional retry key. Reusing it with the identical request replays the original response without creating another post.'}, 'platformSettings': {'type': 'object', 'properties': {'tiktok': {'type': 'object', 'properties': {'allowDuet': {'type': 'boolean'}, 'allowStitch': {'type': 'boolean'}, 'brandOrganic': {'type': 'boolean'}, 'allowComments': {'type': 'boolean'}, 'viewerSetting': {'enum': ['PUBLIC_TO_EVERYONE', 'MUTUAL_FOLLOW_FRIENDS', 'FOLLOWER_OF_CREATOR', 'SELF_ONLY'], 'type': 'string'}, 'brandedContent': {'type': 'boolean'}, 'commercialContent': {'type': 'boolean'}}, 'additionalProperties': False}, 'threads': {'type': 'object', 'properties': {'replyControl': {'anyOf': [{'enum': ['everyone', 'accounts_you_follow', 'mentioned_only'], 'type': 'string'}, {'type': 'string', 'const': ''}]}}, 'additionalProperties': False}, 'twitter': {'type': 'object', 'properties': {'replyTo': {'type': 'string', 'description': "Publish the X post as a reply to this tweet: full tweet URL (x.com/twitter.com .../status/<id>) or bare numeric tweet ID. A thread chains under the target. Empty string clears. IMPORTANT: X only accepts a programmatic reply when the target post's author mentioned this account IN THAT POST, quoted one of its posts, or when this account wrote it — replying to an unrelated third-party tweet fails at publish time. Use it for answering mentions, not for cold outreach."}, 'quoteTweet': {'type': 'string', 'description': 'Quote this tweet: full tweet URL or bare numeric tweet ID (applied to the first tweet of a thread). May be combined with replyTo and with media. Empty string clears. Subject to the same X restriction as replyTo: the target author must have mentioned this account in that post or quoted one of its posts, unless this account wrote the target itself.'}}, 'additionalProperties': False}, 'youtube': {'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'privacy': {'enum': ['private', 'public', 'unlisted'], 'type': 'string'}, 'playlist': {'type': 'object', 'required': ['id', 'platformId'], 'properties': {'id': {'type': 'string'}, 'platformId': {'type': 'string'}}, 'additionalProperties': False}, 'categoryId': {'type': 'string'}, 'madeForKids': {'type': 'boolean'}}, 'additionalProperties': False}, 'linkedin': {'type': 'object', 'properties': {'repostEnabled': {'type': 'boolean'}, 'repostParentUrn': {'anyOf': [{'type': 'string', 'pattern': '^urn:li:(?:share|ugcPost):[A-Za-z0-9_-]+$'}, {'type': 'string', 'const': ''}], 'description': 'Canonical LinkedIn post URN to repost; activity URNs are not supported'}, 'repostVisibility': {'enum': ['PUBLIC', 'CONNECTIONS'], 'type': 'string'}}, 'additionalProperties': False}, 'telegram': {'type': 'object', 'properties': {'protectContent': {'type': 'boolean'}, 'disableNotification': {'type': 'boolean'}, 'disableWebPagePreview': {'type': 'boolean'}}, 'additionalProperties': False}, 'instagram': {'type': 'object', 'properties': {'coverUrl': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/.*'}, {'type': 'string', 'const': ''}], 'description': 'Public https URL of a JPEG Reels cover image'}, 'videoType': {'enum': ['REELS', 'STORIES'], 'type': 'string'}, 'shareToFeed': {'type': 'boolean'}}, 'additionalProperties': False}}, 'description': "Per-platform options keyed by platform. Example: { instagram: { coverUrl: 'https://.../cover.jpg' }, youtube: { title: 'My video', tags: ['topic'] }, tiktok: { viewerSetting: 'SELF_ONLY' }, twitter: { replyTo: 'https://x.com/user/status/123' } }. Also supports telegram.disableNotification/disableWebPagePreview/protectContent, threads.replyControl, linkedin.repostParentUrn/repostVisibility. Unknown platforms or fields are rejected.", 'additionalProperties': False}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['mediaId'], 'properties': {'mediaId': {'type': 'string', 'description': "MediaFile ID to delete (see the 'media' array in get_post)"}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postGroupId'], 'properties': {'postGroupId': {'type': 'string', 'description': 'Post group ID'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postGroupId'], 'properties': {'postGroupId': {'type': 'string', 'description': 'Post group ID'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postGroupId', 'fileName', 'contentType', 'type'], 'properties': {'type': {'enum': ['image', 'video'], 'type': 'string', 'description': "Media type: 'image' or 'video'"}, 'fileName': {'type': 'string', 'description': "File name, e.g. 'photo.jpg'"}, 'contentType': {'type': 'string', 'description': "MIME type, e.g. 'image/jpeg' or 'video/mp4'"}, 'postGroupId': {'type': 'string', 'description': 'Post group ID to attach media to'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postedId', 'platformId', 'message'], 'properties': {'message': {'type': 'string', 'description': 'Required comment text string (max 1250 characters). May be empty only when imageUrl is provided; use an empty string for an image-only comment. Supports mentions: @{urn:li:person:Dk968RHxiO|John Smith} or @{urn:li:organization:12345678|Company Name}. Person IDs must be raw native app-scoped member IDs returned by Publora. If starting from list_connections platformId such as linkedin-Dk968RHxiO, remove the leading linkedin- before building the person URN; IDs copied from linkedin.com profile URLs are rejected.'}, 'imageUrl': {'type': 'string', 'description': 'Public https URL of one image to attach to the comment. JPEG, PNG and GIF only (animated GIFs work — LinkedIn allows up to 250 frames); max 10MB and fewer than 36,152,320 pixels. Video and documents cannot be attached to LinkedIn comments. LinkedIn validates media AFTER accepting it, so an image breaching those limits still returns success but does not render — it cannot be detected here.'}, 'postedId': {'type': 'string', 'description': "LinkedIn post URN, e.g. 'urn:li:share:123456' or 'urn:li:ugcPost:123456'"}, 'platformId': {'type': 'string', 'description': "Platform connection ID, e.g. 'linkedin-XxxYyy'"}, 'parentComment': {'type': 'string', 'description': 'Parent comment URN for nested replies'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postedId', 'platformId', 'reactionType'], 'properties': {'postedId': {'type': 'string', 'description': "LinkedIn post URN, e.g. 'urn:li:share:123456'"}, 'platformId': {'type': 'string', 'description': 'Platform connection ID'}, 'reactionType': {'enum': ['LIKE', 'PRAISE', 'EMPATHY', 'INTEREST', 'APPRECIATION', 'ENTERTAINMENT'], 'type': 'string', 'description': 'Reaction type'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['platformId', 'parent'], 'properties': {'parent': {'type': 'string', 'description': "URN of the post to reshare, e.g. 'urn:li:share:123456' or 'urn:li:ugcPost:123456'"}, 'commentary': {'type': 'string', 'maxLength': 3000, 'description': 'Optional commentary shown above the reshare (max 3000 characters)'}, 'platformId': {'type': 'string', 'description': "Platform connection ID, e.g. 'linkedin-XxxYyy'"}, 'visibility': {'enum': ['PUBLIC', 'CONNECTIONS'], 'type': 'string', 'description': 'Reshare visibility (default: PUBLIC). CONNECTIONS is only valid for personal accounts.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postedId', 'commentId', 'platformId'], 'properties': {'postedId': {'type': 'string', 'description': 'LinkedIn post URN the comment belongs to'}, 'commentId': {'type': 'string', 'description': "Comment URN to delete, e.g. 'urn:li:comment:(urn:li:ugcPost:xxx,123456)'"}, 'platformId': {'type': 'string', 'description': 'Platform connection ID'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postedId', 'platformId'], 'properties': {'postedId': {'type': 'string', 'description': 'LinkedIn post URN'}, 'platformId': {'type': 'string', 'description': 'Platform connection ID'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Name filter (substring)'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max results (default 25)'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'limit': {'type': 'number', 'description': 'Results per page (default: 20, max: 100)'}, 'sortBy': {'enum': ['createdAt', 'updatedAt', 'scheduledTime'], 'type': 'string', 'description': 'Sort field (default: createdAt)'}, 'status': {'enum': ['draft', 'scheduled', 'published', 'failed', 'partially_published'], 'type': 'string', 'description': 'Filter by post status'}, 'toDate': {'type': 'string', 'description': 'End date filter (ISO 8601)'}, 'fromDate': {'type': 'string', 'description': 'Start date filter (ISO 8601)'}, 'platform': {'type': 'string', 'description': "Filter by platform name, e.g. 'linkedin', 'twitter'"}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction (default: desc)'}, 'responseFormat': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "'detailed' (default) returns full post content; 'concise' truncates each post's content to a preview to save tokens."}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['platform', 'platformId', 'postedIds'], 'properties': {'platform': {'enum': ['mastodon', 'bluesky'], 'type': 'string', 'description': 'Platform of the posts'}, 'postedIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1, 'description': 'Platform post IDs (`postedId`): Bluesky AT-URI, Mastodon status id. Max 50.'}, 'platformId': {'type': 'string', 'description': "Connection ID from list_connections, e.g. 'bluesky-did:plc:…' or 'mastodon-123' (prefix optional)"}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['platform', 'platformId'], 'properties': {'platform': {'enum': ['mastodon', 'bluesky'], 'type': 'string', 'description': 'Platform of the account'}, 'platformId': {'type': 'string', 'description': 'Connection ID from list_connections (prefix optional)'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postGroupId', 'mediaId'], 'properties': {'mediaId': {'type': 'string', 'description': 'Stale media ID reported in the MEDIA_REFERENCE_MISSING error'}, 'postGroupId': {'type': 'string', 'description': 'Post group ID that contains the stale media reference'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', 'required': ['postGroupId'], 'properties': {'status': {'enum': ['draft', 'scheduled'], 'type': 'string', 'description': "New status: 'draft' or 'scheduled'"}, 'content': {'type': 'string', 'description': "Optional replacement base post text. On X and Threads, long content auto-splits into a chain; a standalone --- line between paragraphs sets a break, and media attach only to the first part. Threads parts are limited to 500 characters; the connection needs threads_manage_replies, and THREADS_PERMISSION_REQUIRED means reconnect in Publora Channels. Thread part and numbering settings are not API/MCP inputs. After partial publication, inspect get_post and never recreate or resubmit the whole chain. For an unknown outcome, check the live account before further action. Updates every target without an explicit platform-specific override. An empty string is allowed for a draft; scheduling still enforces each platform's content/media rules."}, 'mediaUrls': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional array (max 10) of public https URLs of images/videos to APPEND to this post. Same rules as create_post: direct file URLs only; jpeg, png, gif, webp, tiff, avif, mp4, mov, webm; images ≤25MB, videos ≤150MB.'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional replacement target platform array. Call list_connections first and copy its platformId values verbatim. This replaces the whole set; [] is allowed only while the post remains a draft.'}, 'postGroupId': {'type': 'string', 'description': 'Post group ID'}, 'firstComment': {'anyOf': [{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text, posted as-is. Measured the way each platform counts: X 280 (25000 on Premium; URLs count 23), LinkedIn 1250, Threads 500, Bluesky 300 graphemes / 3000 bytes, Mastodon 500 (links count 23).'}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': "Optional platform TYPES to restrict the comment to, e.g. ['linkedin', 'threads'] — NOT connection keys. Omit to comment on every supported target."}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Replace the first comment (object) or clear it (null). Legacy single first comment under your own post. Supported: linkedin (profiles and Pages), twitter, threads, bluesky, mastodon; other targets are skipped. Best effort: read firstCommentResult via get_post. Cannot be combined with firstComments or added after publishing.'}, 'firstComments': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text, posted as-is. Measured the way each platform counts: X 280 (25000 on Premium; URLs count 23), LinkedIn 1250, Threads 500, Bluesky 300 graphemes / 3000 bytes, Mastodon 500 (links count 23).'}, 'platforms': {'type': 'array', 'items': {'enum': ['twitter', 'threads', 'bluesky', 'tiktok', 'instagram', 'mastodon', 'youtube', 'linkedin', 'telegram', 'facebook'], 'type': 'string'}, 'description': "Optional platform TYPES to restrict the comment to, e.g. ['linkedin', 'threads'] — NOT connection keys. Omit to comment on every supported target."}, 'delaySeconds': {'type': 'integer', 'maximum': 86400, 'minimum': 0, 'description': 'Delay after the previous comment (or publication for item 0), in seconds. Omit for 0; actual delivery is within one scheduler tick.'}}, 'additionalProperties': False}, 'maxItems': 3}, {'type': 'null'}], 'description': 'Replace all first comments (array of up to 3), or clear with null or []. Up to 3 ordered first comments under your own post, each { text, platforms?, delaySeconds? }. delaySeconds is an integer 0–86400; omitted means 0. The next comment runs only after the previous one posts, on a scheduler tick; a failed comment stops later ones. Platform types (not connection keys) and text limits follow firstComment. Best effort, no blind retries. Read per-target firstCommentResults via get_post. Cannot be combined with firstComment or added after publishing.'}, 'scheduledTime': {'type': 'string', 'description': 'New scheduled time in ISO 8601 format'}, 'idempotencyKey': {'type': 'string', 'minLength': 1, 'description': 'Optional retry key. Reusing it with the identical request prevents repeated media appends and replays the original response.'}, 'platformSettings': {'type': 'object', 'properties': {'tiktok': {'type': 'object', 'properties': {'allowDuet': {'type': 'boolean'}, 'allowStitch': {'type': 'boolean'}, 'brandOrganic': {'type': 'boolean'}, 'allowComments': {'type': 'boolean'}, 'viewerSetting': {'enum': ['PUBLIC_TO_EVERYONE', 'MUTUAL_FOLLOW_FRIENDS', 'FOLLOWER_OF_CREATOR', 'SELF_ONLY'], 'type': 'string'}, 'brandedContent': {'type': 'boolean'}, 'commercialContent': {'type': 'boolean'}}, 'additionalProperties': False}, 'threads': {'type': 'object', 'properties': {'replyControl': {'anyOf': [{'enum': ['everyone', 'accounts_you_follow', 'mentioned_only'], 'type': 'string'}, {'type': 'string', 'const': ''}]}}, 'additionalProperties': False}, 'twitter': {'type': 'object', 'properties': {'replyTo': {'type': 'string', 'description': "Publish the X post as a reply to this tweet: full tweet URL (x.com/twitter.com .../status/<id>) or bare numeric tweet ID. A thread chains under the target. Empty string clears. IMPORTANT: X only accepts a programmatic reply when the target post's author mentioned this account IN THAT POST, quoted one of its posts, or when this account wrote it — replying to an unrelated third-party tweet fails at publish time. Use it for answering mentions, not for cold outreach."}, 'quoteTweet': {'type': 'string', 'description': 'Quote this tweet: full tweet URL or bare numeric tweet ID (applied to the first tweet of a thread). May be combined with replyTo and with media. Empty string clears. Subject to the same X restriction as replyTo: the target author must have mentioned this account in that post or quoted one of its posts, unless this account wrote the target itself.'}}, 'additionalProperties': False}, 'youtube': {'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'privacy': {'enum': ['private', 'public', 'unlisted'], 'type': 'string'}, 'playlist': {'type': 'object', 'required': ['id', 'platformId'], 'properties': {'id': {'type': 'string'}, 'platformId': {'type': 'string'}}, 'additionalProperties': False}, 'categoryId': {'type': 'string'}, 'madeForKids': {'type': 'boolean'}}, 'additionalProperties': False}, 'linkedin': {'type': 'object', 'properties': {'repostEnabled': {'type': 'boolean'}, 'repostParentUrn': {'anyOf': [{'type': 'string', 'pattern': '^urn:li:(?:share|ugcPost):[A-Za-z0-9_-]+$'}, {'type': 'string', 'const': ''}], 'description': 'Canonical LinkedIn post URN to repost; activity URNs are not supported'}, 'repostVisibility': {'enum': ['PUBLIC', 'CONNECTIONS'], 'type': 'string'}}, 'additionalProperties': False}, 'telegram': {'type': 'object', 'properties': {'protectContent': {'type': 'boolean'}, 'disableNotification': {'type': 'boolean'}, 'disableWebPagePreview': {'type': 'boolean'}}, 'additionalProperties': False}, 'instagram': {'type': 'object', 'properties': {'coverUrl': {'anyOf': [{'type': 'string', 'format': 'uri', 'pattern': '^https:\\/\\/.*'}, {'type': 'string', 'const': ''}], 'description': 'Public https URL of a JPEG Reels cover image'}, 'videoType': {'enum': ['REELS', 'STORIES'], 'type': 'string'}, 'shareToFeed': {'type': 'boolean'}}, 'additionalProperties': False}}, 'description': "Merge per-platform options (same shape as create_post). Per-platform options keyed by platform. Example: { instagram: { coverUrl: 'https://.../cover.jpg' }, youtube: { title: 'My video', tags: ['topic'] }, tiktok: { viewerSetting: 'SELF_ONLY' }, twitter: { replyTo: 'https://x.com/user/status/123' } }. Also supports telegram.disableNotification/disableWebPagePreview/protectContent, threads.replyControl, linkedin.repostParentUrn/repostVisibility. Unknown platforms or fields are rejected.", 'additionalProperties': False}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
captapi
Retrieves social media profiles, posts, engagement metrics, comments, marketplace listings, events, and Meta advertising data acr…
SendIt
Plans, generates, approves, schedules, publishes, and analyzes social media content across LinkedIn, Instagram, Threads, TikTok, …
aidelly
Supports agency social media operations including content creation, approvals, scheduling, publishing, repurposing, analytics, ec…
LinkedIn MCP Server (Salesbot)
Supports LinkedIn lead discovery, contact enrichment, CRM pipelines, campaign sequencing, message approval and human-reviewed out…
excalibur-mcp
Creates, schedules, manages, and measures formatted posts for X, with OAuth, snippets, writing voice, and post performance tracki…
uplika
Publishes and manages posts, replies, messages, media, and automations across connected social platforms.
Prowlo — Reddit & X for AI agents
Indexes and searches Reddit and X-related social data, discovers communities, monitors keywords, finds engagement opportunities, …
ChiefLab
Runs approval-gated product launch workflows with channel-specific marketing drafts, social publishing, email actions, measuremen…