Browse docs

Configured tool · write

publish_video

Submit finished short-form video for immediate or UTC-scheduled execution.

writenon-destructiveopen-world

Human and agent roles

Configured boundary

Configured workspace

Approval depends on trust and eligible plan authorization. This call cannot approve itself, expand trust, or change platform policy.

This reference describes a connection made with @postdom/mcp@0.3.0 and a workspace-scoped agent key created in Accounts.

Callable schema

Input fields

Field names match the configured tool schema. Runtime-only constraints are labeled separately from schema validation.

FieldTypeContract
account_idsRequired
string[]
At least one value

Exact connected destination identifiers returned by list_accounts.

video_urlOptional
URL
Exactly one of video_url or media_handle

Finished media already available at an accepted URL.

media_handleOptional
pd_media_…
Exactly one of media_handle or video_url · status stored

Postdom-owned media verified through get_media.

captionRequired
string
At most 4,000 characters

Caption passed to each destination adapter.

intentRequired
string
1–500 characters

The calling agent's reason for this execution.

agent_identityOptional
string
1–120 characters

Caller identity when the configured client does not supply one.

publish_atOptional
datetime
RFC 3339 UTC ending in Z

Exact execution time. Omit it for an unscheduled request.

plan_idOptional
UUID
Valid UUID

Approved plan proposed as the authorization boundary.

idempotency_keyOptional
string
Non-empty

Caller-supplied replay key. The adapter generates a UUID when omitted.

Synthetic values

Example call

Identifiers and values are examples. They do not represent a connected workspace or accepted media source.

EXAMPLE CALL · CONFIGURED TOOL SCHEMA
publish_video({
  account_ids: ["acct_example_ig", "acct_example_yt"],
  video_url: "https://media.example.invalid/launch.mp4",
  caption: "Three moves that changed our launch",
  intent: "Execute the approved launch schedule",
  publish_at: "2026-09-03T09:00:00Z",
  plan_id: "11111111-1111-4111-8111-111111111111"
})

Configured behavior

Adapter defaults

The configured adapter adds platform settings after validation. These values are behavior, not callable publish_video inputs.

TIKTOK

Private review

Uses SELF_ONLY, disables comments, duet, and stitch, confirms consent, and marks the video as AI-made.

INSTAGRAM REELS

Reel disclosure

Uses reel content and marks it AI-generated. The adapter supplies no Instagram visibility field.

YOUTUBE SHORTS

Private review

Uses private visibility, not made for kids, and synthetic-media disclosure. The first caption line becomes the title, capped at 100 characters.

LINKEDIN

No settings sent

The adapter sends no LinkedIn settings at all. The Posts API requires a visibility value, so LinkedIn sets one on the account's behalf; Postdom neither chooses nor reads it. There is no AI-disclosure field on this destination, so none is sent.

FACEBOOK REELS

Reel format only

Publishes as a Reel. That format is the only value the adapter sends and it is fixed, so there is nothing to choose. Facebook Reels expose no AI-disclosure field on the publishing path, so none is sent - unlike Instagram, where the same Reel format carries one.

X

No settings sent

The adapter sends no X settings at all. X exposes no visibility field on the publishing path and no AI-disclosure field, so nothing is chosen on the account's behalf and nothing is disclosed.

SNAPCHAT SPOTLIGHT

No settings sent

Publishes to Spotlight, which needs a Public Profile on the account - a regular account cannot publish. The adapter sends no Snapchat settings; the endpoint does expose a save-to-profile option Postdom does not send, so this is a destination where Postdom chooses none of the options rather than one with no options.

THREADS

No settings sent

The adapter sends no Threads settings. Meta's posting endpoint exposes no visibility field and no AI-disclosure field, so nothing is chosen on the account's behalf and no disclosure accompanies the post. A Threads profile is public or private and the post inherits that from the account, so the audience control exists one level up rather than not at all.

BLUESKY

No settings sent

The adapter sends no Bluesky settings, and here that means there is nothing to send: an app.bsky.feed.post carries no visibility field, so every post is public. Reply gating lives in separate threadgate and postgate records rather than in the post, and Postdom writes neither. Connecting uses an app password rather than an authorisation redirect.

Observed API record

Return shape

Returns the initial post response. Its fields vary with draft, approval, scheduled, or publishing state.

id · statusidentity · post state
Created post identifier and exact current state.
scheduled_fordatetime | null
Resolved schedule. Null does not imply an exact execution time.
plan_idUUID | null | optional
Present on scheduled, publishing, and approval responses. Draft responses omit it.
plan_authorizationobject | null | optional
Present on scheduled, publishing, and approval responses. Draft responses omit it.
version · request_hashreview metadata
Returned on human-review and draft paths.
approval_schemestring | optional
Present on approval responses and identifies the immutable-request approval scheme.
messagestring
Human handoff detail on draft or approval paths.

Stop conditions

Agent handoff

draft

Hand to a human

A human can publish now or schedule the draft.

requires_approval

Wait for review

No provider request has been made at this state.

scheduled · publishing

Read the post

Use get_publish to follow the post and destination states.

not_applied

Preserve the reason

Return the exact authorization reason without widening the request.

VERIFIED · 26 AUGUST 2026Configured MCP schema · Runtime response model

Examples are synthetic. Human workspace-key creation and revocation remain in the authenticated Accounts screen.