You're viewing a demo portfolio

Join the waitlist
PRSM

aidelly_create_post

Active

Tool of io.github.wilzer/aidelly

declared in 0.3.0

Accept a post for immediate asynchronous publishing or future scheduling. HTTP 201 and ok=true mean accepted, not delivered. For immediate posts, poll aidelly_get_post and only report publication when status is completed and provider_post_id is non-null. Use aidelly_list_pinterest_boards before Pinterest posts and pass content.platform_specific.board_id.

Parameters schema

{
  "type": "object",
  "required": [
    "idempotency_key",
    "platform",
    "content"
  ],
  "properties": {
    "body": {
      "type": "object",
      "description": "Optional body override for endpoints with sparse parameter schemas.",
      "additionalProperties": true
    },
    "query": {
      "type": "object",
      "description": "Optional query overrides for endpoints with sparse parameter schemas.",
      "additionalProperties": true
    },
    "content": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "link": {
          "type": "string",
          "format": "uri"
        },
        "text": {
          "type": "string",
          "example": "Launching our new feature today.",
          "minLength": 1
        },
        "media": {
          "type": "array",
          "items": {
            "type": "object",
            "anyOf": [
              {
                "required": [
                  "url"
                ]
              },
              {
                "required": [
                  "read_url"
                ]
              },
              {
                "required": [
                  "media_id"
                ]
              }
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Publishable media URL. Use `read_url` returned by `POST /media/upload-url`."
              },
              "type": {
                "enum": [
                  "image",
                  "video",
                  "gif"
                ],
                "type": "string"
              },
              "media_id": {
                "type": "string",
                "description": "Media id returned by `POST /media/upload-url`. Accepted when `url`/`read_url` is not available."
              },
              "read_url": {
                "type": "string",
                "format": "uri",
                "description": "MCP-friendly alias for `url`."
              }
            }
          },
          "maxItems": 10,
          "description": "Media attachments. Supplying multiple items automatically creates a carousel/slideshow on platforms that support it (Instagram, Facebook, TikTok).\nUse `read_url` returned by `POST /media/upload-url` for each `media[].url`.\nTruncated or corrupt images are rejected at upload and publish preflight with a clear validation error.\n- **Instagram**: 2–10 images → carousel; 1 video → reel (or `platform_specific.contentType: \"reel\"`)\n- **TikTok**: all images → photo carousel; 1 video → video post or draft\n- **Facebook**: 2+ images → carousel; 1 video → video post\n"
        },
        "title": {
          "type": "string"
        },
        "thread": {
          "type": "object",
          "required": [
            "parts"
          ],
          "properties": {
            "parts": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "minLength": 1
                  },
                  "media": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "type": {
                          "enum": [
                            "image",
                            "video",
                            "gif"
                          ],
                          "type": "string"
                        }
                      }
                    },
                    "maxItems": 4
                  }
                }
              },
              "maxItems": 25,
              "minItems": 2
            },
            "overrides": {
              "type": "object",
              "description": "Per-platform override (`{ twitter: [...], bluesky: [...] }`).\nFalls back to `parts` when missing.\n",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "description": "Native thread composition. Honored on platforms whose\n`capabilities.thread` is true (X, Bluesky, Threads). Each part\npublishes as a reply chained off the previous one. `parts[0]`\nis the root post and shares text with `content.text`.\n",
          "additionalProperties": false
        },
        "hashtags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 30
        },
        "mentions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 30
        },
        "image_url": {
          "type": "string",
          "format": "uri",
          "description": "Single image URL alias. Prefer `content.media[].url` for new calls."
        },
        "draft_kind": {
          "enum": [
            "post",
            "thread"
          ],
          "type": "string",
          "description": "Indicates whether the composer authored a single post or a\nthread. Optional — when omitted, threads are inferred from\n`thread.parts.length > 1`.\n"
        },
        "media_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "maxItems": 10,
          "description": "Agent-friendly alias for image URLs. Prefer `content.media[].url` for new calls."
        },
        "first_comment": {
          "type": "object",
          "required": [
            "text"
          ],
          "properties": {
            "text": {
              "type": "string",
              "maxLength": 2200,
              "minLength": 1,
              "description": "Global comment text. Default for every capable platform."
            },
            "overrides": {
              "type": "object",
              "description": "Per-platform override (`{ instagram: \"...\", facebook: \"...\" }`).\nFalls back to `text` when missing or empty.\n",
              "additionalProperties": {
                "type": "string",
                "maxLength": 2200,
                "minLength": 1
              }
            },
            "delay_minutes": {
              "enum": [
                0,
                5,
                30,
                60,
                360,
                1440
              ],
              "type": "integer",
              "description": "Minutes to wait after the main publish before posting the\ncomment. Fully honored on scheduled posts (Inngest sleep);\nbest-effort on immediate publishes.\n"
            }
          },
          "description": "Auto-posts a comment on the published post. Honored on platforms\nwhose `capabilities.firstComment` is true (Facebook, Instagram,\nLinkedIn, YouTube, X, Bluesky, Threads).\n",
          "additionalProperties": false
        },
        "platformSpecific": {
          "type": "object",
          "description": "Alias for `platform_specific` (agent compatibility).",
          "additionalProperties": true
        },
        "platform_specific": {
          "type": "object",
          "example": {
            "postMode": "draft"
          },
          "properties": {
            "boardId": {
              "type": "string",
              "description": "Camel-case alias for Pinterest board_id."
            },
            "board_id": {
              "type": "string",
              "description": "Pinterest board id returned by aidelly_list_pinterest_boards."
            }
          },
          "description": "Platform-specific options. Supported fields per platform:\n\n**Instagram**\n- `contentType` (`string`): `\"post\"` | `\"reel\"` | `\"story\"`. Defaults to `\"reel\"` for a single video, `\"carousel\"` for multiple images, `\"post\"` otherwise.\n- `instagramDestination` / `instagram_destination` (`string`): `\"post\"` | `\"stories\"` | `\"post_stories\"`. Use `stories` for Story-only or `post_stories` for feed + Story.\n- `reelOptions.shareToFeed` (`boolean`): Share reel to feed. Default `true`.\n- `reelOptions.trialReel.enabled` (`boolean`): Publish as a trial reel to non-followers first. When enabled, `shareToFeed` is forced to `false`.\n- `reelOptions.trialReel.graduationStrategy` (`string`): Required for trial reels. `\"MANUAL\"` graduates in Instagram; `\"SS_PERFORMANCE\"` graduates automatically based on performance.\n\n**TikTok**\n- `postMode` (`string`): `\"direct\"` (publish immediately) | `\"draft\"` (save to inbox for review). Default `\"direct\"`.\n- `postAsDraft` (`boolean`): Shorthand for `postMode: \"draft\"`.\n- `title` (`string`): Optional title shown in the TikTok inbox when posting as draft.\n- Aliases accepted for agents and normalized to camelCase: `post_mode`, `post_as_draft`, `publish_immediately`.\n- `photos` (`array`): For photo carousels — array of `{ url, order, caption? }` objects (max 35). When all media items are images, TikTok automatically creates a photo carousel.\n- `allowComments` (`boolean`), `allowDuet` (`boolean`), `allowStitch` (`boolean`): Interaction controls.\n\n**Facebook**\n- `fbPostType` (`string`): `\"photo\"` | `\"carousel\"`. Post type. `\"carousel\"` enables multi-card experience with child attachments. Defaults to `\"photo\"`.\n- `fbCarouselLink` (`string`): Destination link for all cards in a carousel. Required when `fbPostType=\"carousel\"`.\n- `fbCarouselCards` (`array`): Optional per-card copy for carousel posts. Array of objects with `name` and `description` strings (max 5 items), index-aligned with media attachments. Example: `[{ name: \"Card 1\", description: \"First card\" }, { name: \"Card 2\", description: \"Second card\" }]`.\n- `enableFirstComment` (`boolean`): Post an auto-comment after publishing.\n- `firstCommentText` (`string`): Text for the auto-comment.\n\n**Facebook Carousel Behavior (backward compatible)**\nSet `fbPostType=\"carousel\"` to opt in to carousel format. When `fbPostType` is absent or set to `\"photo\"`, the default behavior is used (single photo or video post). Absent or `\"photo\"` = backward compatible behavior.\n\n**Pinterest**\n- `board_id` / `boardId` (`string`): Board id returned by `GET /accounts/pinterest/boards`. When omitted, Aidelly resolves a board in this order: (1) value in the request payload, (2) board saved on the connected Pinterest account (`platform_specific`), (3) workspace posting default, (4) user-level posting default. Publishing fails preflight if no board can be resolved.\n\n**LinkedIn**\n- `contentType` (`string`): `\"post\"` | `\"image\"` | `\"video\"` — auto-detected from media if not specified.\n\n**Threads**\n- `replyControl` (`string`): `\"everyone\"` | `\"accounts_you_follow\"` | `\"mentioned_only\"`. Maps to the Threads API `reply_control` field. Defaults to the connection's saved Threads posting default, then `\"everyone\"`.\n- `topicTag` (`string`): A single topic tag (Threads accepts at most one per post). Maps to `topic_tag`.\n- `allowlistedCountryCodes` (`string[]`): ISO-3166 alpha-2 country codes that are allowed to see the post. Maps to `allowlisted_country_codes`. Empty array publishes globally.\n- `linkAttachmentUrl` (`string`): URL to attach as the canonical link preview. Maps to `link_attachment`.\n\n**Google Business** (`google_business`)\n- `locationName` (`string`, required): Full GBP location resource name, e.g. `accounts/{accountId}/locations/{locationId}`. Use the `id` from `/accounts` for a `google_business` row. Falls back to the connection's saved default location when omitted.\n- `topicType` (`string`): `\"STANDARD\"` | `\"EVENT\"` | `\"OFFER\"` | `\"ALERT\"`. Defaults to `\"STANDARD\"`.\n- `languageCode` (`string`): BCP-47 language tag (e.g. `\"en-US\"`). Defaults to `\"en-US\"`.\n- `callToActionType` (`string`): `\"BOOK\"` | `\"ORDER\"` | `\"SHOP\"` | `\"LEARN_MORE\"` | `\"SIGN_UP\"` | `\"CALL\"`. Adds a CTA button to STANDARD posts only.\n- `callToActionUrl` (`string`): Required for every CTA except `CALL`, which uses the phone number on the Business Profile.\n- `event` (`object`, required when `topicType` is `\"EVENT\"`): `{ title, schedule }` where `schedule` accepts ISO `start`/`end` strings or Google date/time objects (`startDate`, `startTime`, `endDate`, `endTime`).\n- `offer` (`object`, required when `topicType` is `\"OFFER\"`): `{ schedule, couponCode?, redeemOnlineUrl?, termsConditions? }`.\n- `alertType` (`string`, required when `topicType` is `\"ALERT\"`): Currently `\"COVID_19\"`.\n",
          "additionalProperties": true
        },
        "instagram_destination": {
          "enum": [
            "post",
            "stories",
            "post_stories"
          ],
          "type": "string",
          "description": "Instagram destination for posts. Use \"stories\" for Story-only or \"post_stories\" for feed + Story."
        }
      },
      "additionalProperties": false
    },
    "brand_id": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "example": {
        "source": "agent",
        "campaign": "spring-launch"
      },
      "additionalProperties": true
    },
    "platform": {
      "enum": [
        "facebook",
        "instagram",
        "linkedin",
        "twitter",
        "bluesky",
        "threads",
        "pinterest",
        "youtube",
        "tiktok",
        "google_business",
        "mastodon"
      ],
      "type": "string",
      "example": "linkedin",
      "description": "Supported platform identifier. `twitter` and `x` map to the same surface;\nresponses always normalize to `twitter`. `google_business` posts target\na single Google Business Profile location identified by\n`platform_specific.locationName`. `mastodon` accounts are per-instance —\nthe connected account carries its own `instance_url`.\n"
    },
    "timezone": {
      "type": "string",
      "example": "UTC"
    },
    "account_id": {
      "type": "string",
      "example": "social-account-id",
      "description": "The account / sub-account this post should target. Format depends on platform:\n  - **facebook** — Page ID (numeric string from `/accounts`).\n  - **instagram** — Instagram Business Account ID.\n  - **linkedin** — connection ID for personal posts; LinkedIn organization URN for company posts.\n  - **google_business** — GBP location resource name. Either fully-qualified\n    `accounts/{accountId}/locations/{locationId}` or the relative\n    `locations/{locationId}` form. Fetch with `GET /accounts` (rows where\n    `account_type: location`).\n  - **twitter / bluesky / threads / tiktok / youtube / pinterest / mastodon** — single-account\n    platforms; `account_id` is optional and ignored.\n\nWhen omitted, posts use the workspace-level default for that platform.\n"
    },
    "scheduled_at": {
      "type": "string",
      "format": "date-time",
      "example": "2026-02-18T17:30:00Z"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "description": "Workspace to operate in. Do not ask the user for this UUID — call aidelly_list_workspaces and use the `id` of the matching workspace. Optional for read operations; required when creating content."
    },
    "idempotency_key": {
      "type": "string"
    },
    "instagram_destination": {
      "enum": [
        "post",
        "stories",
        "post_stories"
      ],
      "type": "string",
      "description": "Instagram-only destination. Use post for feed only, stories for Stories only, or post_stories for both feed and Stories."
    }
  },
  "additionalProperties": false
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.50.

Parent server

io.github.wilzer/aidelly

https://github.com/Aidelly/claude-plugin

1/7 registries
View full server →
aidelly_create_post — io.github.wilzer/aidelly — PRSM MCP