Skip to main content
Glama
LazyRelay MCP Server

LazyRelay MCP Server

schedule_post

Schedule a post to one connected account at a future time, with platform-specific settings and optional client approval before publishing.

Instructions

Schedule a post to ONE connected account (call once per account to post to several). Use list_connected_accounts for the id and get_platform_rules to see what the platform needs. TikTok needs tiktokPrivacyLevel, Pinterest needs boardId. Set requiresApproval to hold it for a client to approve first.

Input Schema

NameRequiredDescriptionDefault
tagsNoUp to 5 short labels for filtering analytics by campaign
boardIdNoPinterest only: the board to pin to. Get it from list_pinterest_boards
contentYesThe post text or caption
optionsNoPlatform-specific settings for the account you post to: tiktok {aiGenerated}; youtube {title, privacy public|unlisted|private, madeForKids, tags[], aiGenerated}; instagram {placement feed|reel|story, trialReel, trialGraduation manual|auto}; facebook {placement feed|story}; linkedin {documentUrl (https PDF), documentTitle}; threads, bluesky, mastodon and x {chain: [follow-up texts]} for a thread. Send only the key that belongs to the account's platform.
mediaUrlNoA publicly accessible image or video URL to attach
mediaUrlsNoExtra images after mediaUrl for a multi-image post. Call get_platform_rules for how many the platform takes
firstCommentNoA first comment posted right after publishing (Facebook and Instagram only)
mediaAltTextNoAccessibility description of the main image (Mastodon and Bluesky use it)
scheduledForYesISO 8601 timestamp for when to post, in the future
coverImageUrlNoA still cover image for a video (Pinterest video pins need one)
selfReplyTextNoA follow-up comment added once the post reaches selfReplyAtLikes likes (Facebook and Instagram only)
destinationLinkNoPinterest only: where a click on the pin goes
socialAccountIdYesThe connected account id to post to, from list_connected_accounts
requiresApprovalNoHold the post until someone approves it (in the dashboard or through a client review link)
selfReplyAtLikesNoThe like count that triggers selfReplyText
tiktokDisableDuetNoTikTok only: turn duets off (default true)
tiktokBrandContentNoTikTok only: the video is a paid partnership
tiktokBrandOrganicNoTikTok only: the video promotes the creator's own brand
tiktokPrivacyLevelNoTikTok only, REQUIRED for TikTok: call get_tiktok_creator_info to see which levels the account allows
tiktokDisableStitchNoTikTok only: turn stitches off (default true)
tiktokDisableCommentNoTikTok only: turn comments off (default true, comments off)
firstCommentDelayMinutesNoWait this many minutes after the post goes live before posting firstComment (0 to 1440, Facebook and Instagram only). 0 or left out posts it right away. Needs firstComment

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changedv0.1.4
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / boardId
      Added value: +{
      +  "description": "Pinterest only: the board to pin to. Get it from list_pinterest_boards",
      +  "type": "string"
      +}
    • changedInput schema / properties / content / description
      Previous value: -"The post text/caption"New value: +"The post text or caption"
    • addedInput schema / properties / coverImageUrl
      Added value: +{
      +  "description": "A still cover image for a video (Pinterest video pins need one)",
      +  "type": "string"
      +}
    • addedInput schema / properties / destinationLink
      Added value: +{
      +  "description": "Pinterest only: where a click on the pin goes",
      +  "type": "string"
      +}
    • addedInput schema / properties / firstComment
      Added value: +{
      +  "description": "A first comment posted right after publishing (Facebook and Instagram only)",
      +  "type": "string"
      +}
    • addedInput schema / properties / firstCommentDelayMinutes
      Added value: +{
      +  "description": "Wait this many minutes after the post goes live before posting firstComment (0 to 1440, Facebook and Instagram only). 0 or left out posts it right away. Needs firstComment",
      +  "maximum": 1440,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / mediaAltText
      Added value: +{
      +  "description": "Accessibility description of the main image (Mastodon and Bluesky use it)",
      +  "type": "string"
      +}
    • changedInput schema / properties / mediaUrl / description
      Previous value: -"A publicly accessible image or video URL to attach, if any"New value: +"A publicly accessible image or video URL to attach"
    • addedInput schema / properties / mediaUrls
      Added value: +{
      +  "description": "Extra images after mediaUrl for a multi-image post. Call get_platform_rules for how many the platform takes",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / options
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Platform-specific settings for the account you post to: tiktok {aiGenerated}; youtube {title, privacy public|unlisted|private, madeForKids, tags[], aiGenerated}; instagram {placement feed|reel|story, trialReel, trialGraduation manual|auto}; facebook {placement feed|story}; linkedin {documentUrl (https PDF), documentTitle}; threads, bluesky, mastodon and x {chain: [follow-up texts]} for a thread. Send only the key that belongs to the account's platform.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / requiresApproval
      Added value: +{
      +  "description": "Hold the post until someone approves it (in the dashboard or through a client review link)",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / scheduledFor / description
      Previous value: -"ISO 8601 timestamp for when to post — use the current time for immediate posting"New value: +"ISO 8601 timestamp for when to post, in the future"
    • addedInput schema / properties / selfReplyAtLikes
      Added value: +{
      +  "description": "The like count that triggers selfReplyText",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / selfReplyText
      Added value: +{
      +  "description": "A follow-up comment added once the post reaches selfReplyAtLikes likes (Facebook and Instagram only)",
      +  "type": "string"
      +}
    • addedInput schema / properties / tags
      Added value: +{
      +  "description": "Up to 5 short labels for filtering analytics by campaign",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / tiktokBrandContent
      Added value: +{
      +  "description": "TikTok only: the video is a paid partnership",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tiktokBrandOrganic
      Added value: +{
      +  "description": "TikTok only: the video promotes the creator's own brand",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tiktokDisableComment
      Added value: +{
      +  "description": "TikTok only: turn comments off (default true, comments off)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tiktokDisableDuet
      Added value: +{
      +  "description": "TikTok only: turn duets off (default true)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tiktokDisableStitch
      Added value: +{
      +  "description": "TikTok only: turn stitches off (default true)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tiktokPrivacyLevel
      Added value: +{
      +  "description": "TikTok only, REQUIRED for TikTok: call get_tiktok_creator_info to see which levels the account allows",
      +  "enum": [
      +    "PUBLIC_TO_EVERYONE",
      +    "MUTUAL_FOLLOW_FRIENDS",
      +    "SELF_ONLY"
      +  ],
      +  "type": "string"
      +}
  2. First observedv0.1.3

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true). The description usefully adds that requiresApproval holds the post for client approval and that each call posts to one account, but it never warns that repeat calls are non-idempotent (duplicate posts) or what happens on platform-rule violations, which the non-idempotent, open-world annotation makes relevant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the single-account scoping rule and then the platform prerequisites. No filler or restated title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-parameter, nested-object, no-output-schema mutation tool, the description covers the high-risk gotchas (platform-specific required fields, approval hold, one-account-per-call) and delegates rest to get_platform_rules. It leaves the non-idempotency/duplicate-call risk unstated, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; each parameter is already described in the schema. The description reinforces the TikTok/Pinterest requirements and the requiresApproval meaning but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (schedule) and resource (post) with an explicit scope constraint: ONE connected account per call, call once per account for multiple. This clearly separates it from publish_post_now and create_draft/schedule_draft siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete prerequisites and routing: list_connected_accounts for the id, get_platform_rules for platform needs, and names the two platform-specific requirements (tiktokPrivacyLevel, boardId). It does not explicitly contrast with publish_post_now or created/scheduled drafts, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.