Skip to main content
Glama
730,643 tools. Updated 2026-10-31 21:28

"Using SocialBu API to Upload Content to Social Media" matching MCP tools:

  • Replaces the video or image behind a not-yet-published post (draft, ready, scheduled or failed) with another upload from the same workspace, like the dashboard's "Replace media". The post keeps its schedule, captions, first comments and platform settings; only the media file changes. Set `apply_to_batch: true` to also swap every other post in the same batch (same media, same status and, for scheduled posts, the same scheduled time), which is what you want when one upload was scheduled to several platforms at once. Upload the new file first with create_video_upload_from_url or create_video_upload + finalize_video_upload, then pass its id here. Refuses text posts, carousels, and posts that are queued, processing or published. Platform compatibility of the new file is not re-checked, so pick media that suits every platform in the batch.
    Connector
    Destructive
    OAuth
  • [writes flayr data · `write` scope] Step 1 of attaching a LOCAL file (video or image) to a draft. Returns a single-use, short-lived `uploadUrl`. Step 2: POST the raw file bytes to it with the file's Content-Type, e.g. `curl -X POST -H "Content-Type: video/mp4" --data-binary @clip.mp4 "<uploadUrl>"` — the JSON response has a `storageId`. Step 3: pass it as `videoStorageId` or `imageStorageId` on create_content or update_content. For media already on the web, skip this and pass `videoUrl` / `imageUrl` instead. Returns 413 when the account's storage is full. (Wraps POST /api/v2/media/upload-url.)
    ConnectorOAuth
  • Generate a standalone image from a text prompt, or edit/restyle images supplied as references. **When to use:** Use this tool based on the requested output, not assumed model limitations such as an inability to render text. If the user explicitly asks for an image, picture, photo, illustration, artwork, sticker, icon, graphic, or 2d vector, use this tool. The explicitly named output takes priority over design-like content within it, including text, statistics, labels, callouts, or an infographic-like composition. For example, "create an image about coffee with bold stat callouts" uses generate-image. Use create-design when the requested output itself is an editable Canva page or layout, such as "create an infographic". "Create an image of an infographic" still uses generate-image. The verb "create" or "design" alone does not make the request a Canva design. **When not to use:** Do not use when the requested output itself is a designed page or layout, such as an infographic, poster, wallpaper, flyer, presentation, or social media post; use create-design. To add, position, resize, or replace content inside an existing design, use the design-editing workflow instead; the image is source media and the design page is the edit target. **Image references and attachments:** For image-to-image generation or editing, add one MEDIA entry to imageReferences for every reference image. Pass the ID of an existing Canva MEDIA content reference directly. Before using a user-provided attachment as a reference, upload it to Canva: call create-upload-url, then send the attachment's raw bytes to the returned upload URL exactly as instructed. Each upload URL is single-use, so call create-upload-url separately for every attachment. Wait for every upload to succeed, then use the mediaId from each upload response as a separate MEDIA entry in imageReferences. For example, after uploading two attachments (replace the illustrative IDs with their returned mediaIds): ```json { "prompt": "Restyle both reference images as watercolor illustrations", "imageReferences": [ {"type": "MEDIA", "id": "MAAAAAAAAAAA"}, {"type": "MEDIA", "id": "MBBBBBBBBBBB"} ] } ``` Use exactly one imageReferences entry per successfully uploaded attachment. Never combine multiple media IDs into one string or object, and never put an upload URL in imageReferences. Do not pass assistant-hosted attachment URLs directly to this tool. If any attachment cannot be uploaded, do not silently omit it; explain the failure to the user. Omit imageReferences for pure text-to-image generation. **Result:** This call returns only a jobId, not the finished image. When this tool's UI widget is shown, the widget polls get-generate-image-job itself and displays the image when ready - do not poll it yourself. Only when no widget is shown, pass the jobId to get-generate-image-job and keep checking until the job succeeds or fails.
    ConnectorOAuth
  • Generate a standalone image from a text prompt, or edit/restyle images supplied as references. **When to use:** Use this tool based on the requested output, not assumed model limitations such as an inability to render text. If the user explicitly asks for an image, picture, photo, illustration, artwork, sticker, icon, graphic, or 2d vector, use this tool. The explicitly named output takes priority over design-like content within it, including text, statistics, labels, callouts, or an infographic-like composition. For example, "create an image about coffee with bold stat callouts" uses generate-image. Use create-design when the requested output itself is an editable Canva page or layout, such as "create an infographic". "Create an image of an infographic" still uses generate-image. The verb "create" or "design" alone does not make the request a Canva design. **When not to use:** Do not use when the requested output itself is a designed page or layout, such as an infographic, poster, wallpaper, flyer, presentation, or social media post; use create-design. To add, position, resize, or replace content inside an existing design, use the design-editing workflow instead; the image is source media and the design page is the edit target. **Image references and attachments:** For image-to-image generation or editing, add one MEDIA entry to imageReferences for every reference image. Pass the ID of an existing Canva MEDIA content reference directly. Before using a user-provided attachment as a reference, upload it to Canva: call create-upload-url, then send the attachment's raw bytes to the returned upload URL exactly as instructed. Each upload URL is single-use, so call create-upload-url separately for every attachment. Wait for every upload to succeed, then use the mediaId from each upload response as a separate MEDIA entry in imageReferences. For example, after uploading two attachments (replace the illustrative IDs with their returned mediaIds): ```json { "prompt": "Restyle both reference images as watercolor illustrations", "imageReferences": [ {"type": "MEDIA", "id": "MAAAAAAAAAAA"}, {"type": "MEDIA", "id": "MBBBBBBBBBBB"} ] } ``` Use exactly one imageReferences entry per successfully uploaded attachment. Never combine multiple media IDs into one string or object, and never put an upload URL in imageReferences. Do not pass assistant-hosted attachment URLs directly to this tool. If any attachment cannot be uploaded, do not silently omit it; explain the failure to the user. Omit imageReferences for pure text-to-image generation. **Result:** This call returns only a jobId, not the finished image. When this tool's UI widget is shown, the widget polls get-generate-image-job itself and displays the image when ready - do not poll it yourself. Only when no widget is shown, pass the jobId to get-generate-image-job and keep checking until the job succeeds or fails.
    ConnectorOAuth
  • Get a presigned S3 URL to upload a LOCAL media file (image/video) for a post. Request once per file; for the same unfinished upload, identical postGroupId/fileName/contentType/type reissues the URL with the same mediaId. Use unique fileNames for different files. This reserves a slot but does not upload bytes. Next: HTTP PUT the raw bytes to uploadUrl with the SAME Content-Type, then complete_media with the mediaId and get_post to verify ready before scheduling. If you cannot access bytes or perform PUT, use a public HTTPS mediaUrls URL or upload through Publora. If a slot already exists, inspect get_post and remove only that specific unfinished reservation with delete_media before adding the replacement, only when the user's task authorizes abandoning it. mediaUrls appends attachments and leaves existing slots in place; do not infer abandonment from an upload error.
    ConnectorOAuth

Matching MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables users to turn any API's documentation into a tested MCP server whose tools expose the API's own operations, with linting, contract tests, and live verification. It accepts OpenAPI/Swagger, Postman, RAML, WSDL, GraphQL, RSS, and HTML docs.
    14
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Turns any OpenAPI REST or GraphQL API into an MCP server, allowing AI assistants like Claude to interact with APIs without writing code.
    5 npm
    MIT

Matching MCP Connectors

  • Transform any blog post or article URL into ready-to-post social media content for Twitter/X threads, LinkedIn posts, Instagram captions, Facebook posts, and email newsletters. Pay-per-event: $0.07 for all 5 platforms, $0.03 for single platform.

  • Manage SocialBu posts, accounts, queues, analytics, automations, media, and listening.

  • Upload an existing MP4, WebM or MOV clip to your own Picorn account. No video generation, editing or rendering. Pass raw mediaBase64 and contentType; maximum 15 MB decoded. Download a licensed source clip in your client first; a webpage URL is not video bytes. Returns fileId, mediaUrl and published:false. Inspect the clip, then publish with picorn_posts_schedule using that fileId, exact accountIds and publishNow:true or scheduledAt. Upload alone does not publish or incur a social posting charge. Requires account access.
    ConnectorNo auth
  • Add a post to the content calendar: the video of a script, or a supporting post, image, carousel, story or text post, with or without a script. Name the script if the post belongs to one; without a script, give the post a title and, if the person says so, the project it belongs to. Say when it goes out, or save it as a draft with no date. For a carousel, the text of each slide goes in the slides, one entry per slide, in order, and never in the publishing notes. Media already online can be added as links here; to add media files from this computer, add the post first, then prepare the upload, run the commands, and confirm the upload.
    ConnectorOAuth
  • Upload media (image, video, GIF, PDF) and return CDN URLs for contents[].media_urls in create_post / update_post. Media is uploaded before the post that references it is created. The returned cdn_url is the media URL, used exactly as returned. A media URL assembled from media_id, a filename or a path points at no stored object, and the post is created without its media. Source types: • 'url' — media already hosted at a public CDN URL (not a social-media page URL). Downloads server-side. Up to 250 MB. Works everywhere and is the best fit on the hosted server. Larger files go through the file_manager upload widget or PosteySkills. • 'base64' — small files (under 5 MB recommended, 20 MB decoded hard cap). Works everywhere. • 'local_path' — local CLI only. Uploads a file from the local machine via the PosteySkills CLI (chunked upload above 50 MB, per-platform validation). Requires PosteySkills installed locally (npx skills add posteyai/skills) and works with the credential already in use, OAuth or API key. Not available on the hosted server, which cannot see the local filesystem. When running locally with PosteySkills, local_path is the fastest option for on-disk files (any size, no encoding). Subject to plan storage quota. Media uploaded here cannot currently be deleted through this server; there is no delete tool on the MCP surface. list_files reads the file_manager widget's own index and does not show upload_media uploads, so the cdn_url this returns cannot be recovered there.
    ConnectorOAuth
  • Show the user an upload widget to add images or videos from their own device to the media library. Use this when the user wants to attach a local file to a post. When the media is already available on a public URL, use uploadFromUrlTool instead. The widget is only displayed by apps that support MCP Apps (interactive UI); in any other app no widget appears, and local files go through the public API (POST /public/v1/upload with an API key, https://hookbird.ai/docs/public-api/introduction). uploadFromUrlTool is only for public URLs. Returns a sessionId: the files the user uploads are reported in the conversation, and can also be read with uploadWidgetStatusTool.
    ConnectorNo auth
  • Get presigned upload URLs for media you generated locally (e.g. rendered carousel slides or a video) that is too large to inline as base64Images. Returns one uploadUrl per file -- HTTP PUT each file's raw bytes to its uploadUrl with the matching "Content-Type" header (no auth header), then call finalize_media_upload with the returned uploadId. A batch is EITHER up to 10 images (one carousel, kept in order) OR exactly one video. Images: jpeg/png/webp/gif, max 25MB each. Video: max 512MB. Upload URLs expire in 1 hour. This is for media YOU produced; if the USER uploaded media in the Socialync app, use list_media instead. If the PUT can't connect (a sandbox network block, a proxy 403, "host not allowed", a DNS failure), do not retry it and do not call finalize_media_upload. Tell the user plainly that their AI app can't reach Socialync's upload server, then offer the two ways forward: (1) they add the file in Socialync (socialync.io: start a post and add the file, no need to finish it), come back, and you find it with list_media; or (2) they allow the upload host in their AI app's code or network settings and you try again. Images up to 8MB each can also go inline as base64Images instead.
    ConnectorOAuth
  • Show the user an upload widget to add images or videos from their own device to the media library. Use this when the user wants to attach a local file to a post. When the media is already available on a public URL, use uploadFromUrlTool instead. The widget is only displayed by apps that support MCP Apps (interactive UI); in any other app no widget appears, and local files go through the public API (POST /public/v1/upload with an API key, https://hookbird.ai/docs/public-api/introduction). uploadFromUrlTool is only for public URLs. Returns a sessionId: the files the user uploads are reported in the conversation, and can also be read with uploadWidgetStatusTool.
    ConnectorNo auth
  • Upload a small source supplied directly as standard base64 content to the authenticated company's storage. Use for inline documents or media up to49152 decoded bytes; filename identifies the file type, data_base64 contains the bytes, and idempotency_key identifies this exact filename/content. Use skavio_upload for operator-staged larger files. Returns uploads containing source id, detected kind, size_bytes, pages and duration; pass those IDs to skavio_estimate. Identical completed retries replay the upload, changed content conflicts, and uncertain uploads require operator reconciliation. Uploading creates stored input, not a billable processing job.
    ConnectorOAuth
  • Edit a recent post from a connected X account. Call x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account. Requires post_id and at least one of text, media, paid_partnership, or made_with_ai. Edits must be within X's one-hour window after posting. The authenticated X account may need X Premium for API edits. Posts with polls and some other types cannot be edited. Each edit returns a new post_id. To attach media, upload files with files.upload_file and pass file_name values from files.list_uploaded_files. Token pricing matches x-twitter.create_post: 60 tokens base, 1000 with URL, plus media surcharges.
    ConnectorNo auth
  • Create a browser upload link for media files. ALWAYS use this when the user shares an image or video in chat — their file is local and cannot be passed directly to publish_content. WORKFLOW: 1. Call this tool to get an uploadUrl 2. Give the user the link to open in their browser and upload their file 3. After upload, call get_upload_session to get the public media URL(s) 4. Use the returned URL with publish_content or schedule_content Supports up to 20 files per session. Expires in 15 minutes.
    ConnectorNo auth
  • Generate ready-to-use marketing and business content for an idea: blog posts, social media, ad copy, press releases, elevator pitches and 12 more types. Returns cached content instantly if it exists, otherwise generates fresh copy. Spends credits only when generating new content. Not read-only; pass an ideaId you own and a contentType.
    ConnectorNo auth
  • Delete a post from the database. By default does NOT remove from social media platforms. Pass delete_on_platform=true to also remove from all published platforms before DB deletion.
    Connector
    Destructive
    OAuth
  • Finishes a direct upload started with init_media_upload after the file was sent to upload_url. Verifies the file, creates the media and starts processing in the background. Poll get_media_upload_status until status is completed before using the media_id in create_post or update_post. Call it once per media_id, a repeated call returns Upload not found. Uploads expire three hours after init_media_upload.
    ConnectorOAuth
  • Get upload URLs for media files that are on the user's computer, so they can be used with schedule_posts. Input: workspace_key and filenames (each with its real extension). For each filename it returns an upload_url and a hosted_url. Upload each file with an HTTP PUT of its raw bytes to its upload_url, for example `curl -X PUT --upload-file <local file> "<upload_url>"`. Do not add x-amz-acl or any other x-amz-* header; the URL is already signed and S3 rejects extra signed headers. Then pass each hosted_url to schedule_posts as a media url, in carousel order. The extension sets the media type. Supported images: png, jpeg, webp, svg. Supported videos: mp4, mpeg, webm, quicktime (.mov).
    ConnectorOAuth
  • Upload an image or video for a soc and get back its media key (pass it to social_post media:[{key, alt}]). png, jpeg, gif, webp, avif, mp4 or webm (no svg); ≤2.9 MB decoded over MCP (POST /api/v1/social/media takes raw bytes up to 5 MB). Content-addressed: the same bytes again return the same key and cost nothing. Billed as storage per MiB from your SOCNET balance; on testnet a fee you cannot cover is waived. 10 uploads/min. AUTH — SIGN THE REQUEST. Ed25519 over the handoff-signed-req statement, headers X-Agent-Id / X-Signature / X-Timestamp, so nothing secret crosses the wire; scripts/handoff-lib.mjs restFetch is the reference signer, and `handoff enroll <id>` mints your signing key if you have none. TRANSPORT: signing works on BOTH MCP transports — the per-POST /mcp one, and the legacy SSE bridge (GET /mcp + POST /mcp/messages), where each message POST carries its own signature (sign the path /mcp/messages WITHOUT the ?sessionId query; signatures are single-use on that channel, so sign each message rather than replaying one).
    Connector
    Destructive
    No auth
  • Edit an existing draft/scheduled post without deleting it. You may change its base content, target platforms, status, scheduled time, per-platform settings, and/or APPEND media from public https URLs via mediaUrls. Set publishNow=true to publish using server time; it consumes monthly quota but no deferred queue slot, even when that queue is full. It re-validates the complete final content/media/platform state. Appending does not replace unfinished upload slots: inspect get_post and use delete_media for that specific reservation first only when the user's task authorizes abandoning it. Before changing platforms, call list_connections and copy each target's platformId verbatim. Published/failed posts and posts already being published are not editable. Scheduling re-validates the complete final content/media/platform state; omitting a field keeps its current value.
    Connector
    Destructive
    OAuth