Publish to social channels from your AI agent. Threads is live; nine more await review.
Déduit des transports déclarés par cette annonce (streamable-http). Un client absent de cette liste n’est pas écarté pour autant — c’est simplement quelque chose que Forge ne peut pas confirmer.
La vérification confirme l’identité de l’éditeur (la propriété du dépôt), pas la sûreté du code. L’analyse de sécurité couvre les CVE connues et les scripts d’installation suspects.
Lu depuis un véritable échange MCP initialize → tools/list contre l’endpoint déclaré. Aucun outil n’a été invoqué — tools/list est l’appel d’introspection en lecture seule que le protocole prévoit pour cela. Cela reflète ce que le serveur annonçait à cet instant ; un endpoint hébergé n’est figé sur aucune version et peut changer sans préavis.
https://api.uplika.com/mcp45 outils · 839 mslist_accountsConnected social accounts. **Call this before publishing anything.** Each item has id, platform (threads etc.), handle and status. The accountIds you pass to publish are these ids, and only "active" ones publish. If the person did not name a channel, target every active account. If the list is empt…Connected social accounts. **Call this before publishing anything.** Each item has id, platform (threads etc.), handle and status. The accountIds you pass to publish are these ids, and only "active" ones publish. If the person did not name a channel, target every active account. If the list is empt…
| Paramètre | Type | Description |
|---|---|---|
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
select_channelsPick which connected channels to post to. **Call this before publish and show the result to the person.** Leave scope empty to get the candidate list and let them choose. Use scope: "all" for every active channel, or an array mixing platform names ("threads"), handles ("@vibe.trender") and account…Pick which connected channels to post to. **Call this before publish and show the result to the person.** Leave scope empty to get the candidate list and let them choose. Use scope: "all" for every active channel, or an array mixing platform names ("threads"), handles ("@vibe.trender") and account…
| Paramètre | Type | Description |
|---|---|---|
| scope | — | Omit to list candidates, "all" for every active channel, or an array of platform names, handles or account ids. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_platformsEvery channel and its rules: character limit, whether media is required, image and video limits, and what state the channel is in. Read this instead of guessing a platform's limits. status says who can connect: live means anyone; beta means the channel is in platform review and only accounts regist…Every channel and its rules: character limit, whether media is required, image and video limits, and what state the channel is in. Read this instead of guessing a platform's limits. status says who can connect: live means anyone; beta means the channel is in platform review and only accounts regist…
| Paramètre | Type | Description |
|---|---|---|
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_postsRecent publishes made through us and the per-target status of each, scheduled and draft posts included (their status says so and scheduledAt says when). Newest first, 20 by default. Pass limit for more or fewer, up to 100. hasMore means the list was cut short; pass the returned nextBefore as before…Recent publishes made through us and the per-target status of each, scheduled and draft posts included (their status says so and scheduledAt says when). Newest first, 20 by default. Pass limit for more or fewer, up to 100. hasMore means the list was cut short; pass the returned nextBefore as before…
| Paramètre | Type | Description |
|---|---|---|
| status | string | Narrow to one or more statuses, comma separated: scheduled, draft, publishing, published, partial, failed or cancelled. Omit for everything. |
| since | string | YYYY-MM-DD or ISO 8601. Only posts dated at or after this. A scheduled post is dated by its scheduledAt, a sent post by when it was created. |
| until | string | YYYY-MM-DD or ISO 8601. Only posts dated at or before this (a date means the whole day). |
| sort | string | scheduled orders by the post's date ascending (soonest first) and drops paging. Omit for newest first. |
| limit | number | 1-100, defaults to 20 |
| before | string | A publish id from a previous page's nextBefore. Returns the ones older than it. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_channel_postsWhat is actually on the channel right now, including posts written in the channel's own app. Use this to find a post when you do not have its link. Each item carries a permalink you can pass straight to open_post, reply or delete_post. An empty list does not always mean the account has no posts: on…What is actually on the channel right now, including posts written in the channel's own app. Use this to find a post when you do not have its link. Each item carries a permalink you can pass straight to open_post, reply or delete_post. An empty list does not always mean the account has no posts: on…
| Paramètre | Type | Description |
|---|---|---|
| accountId | string | Limit to one account. Omit to cover every connected channel. |
| limit | number | 1-100, defaults to 25 |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
publishPost to social channels. Channels open today: threads, instagram, youtube, facebook, bluesky, telegram, naver_blog, tiktok. Get accountIds from select_channels — do not guess which channel the person meant. Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_l…Post to social channels. Channels open today: threads, instagram, youtube, facebook, bluesky, telegram, naver_blog, tiktok. Get accountIds from select_channels — do not guess which channel the person meant. Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_l…
| Paramètre | Type | Description |
|---|---|---|
| content | string | Post text |
| accountIds* | array | Account ids from select_channels |
| mediaIds | array | Media ids from media_presign (confirmed with media_complete), media_from_url or media_upload_link. On Naver Blog you can leave out ids the body already points… |
| threadItems | array | Split a long post into a chain instead of calling publish and then reply. The first item is the root and the rest become replies under it, in order. We handle… |
| topicTag | string | One topic to tag the post with, like a category. Only some channels take one, and those reject periods and ampersands in it. If any channel in accountIds does… |
| options | object | Per-channel settings, keyed by channel id. Only the channels you are posting to need an entry. Every channel takes content to override the shared text for that… |
| wait | boolean | Hold the response until the post is really out. Text waits up to 10 seconds, posts with media up to 90 seconds. If it is still going after that you get the usu… |
| scheduledAt | string | ISO 8601 time with a timezone offset (2026-09-20T09:00:00+09:00) to send the post at, on every channel. 10 minutes to 365 days from now. We keep the post as sc… |
| draft | boolean | true saves the post as a draft on uplika without sending anything. Use it when the person wants to review before it goes out. They finish it in the dashboard,… |
| automation | object | Attach an automation to this post in the same call. template defaults to comment_to_dm; params are that template's params (see list_automation_templates) minus… |
| batchId | string | Optional tag (letters, digits, - or _) to group posts made together, for example the same text sent to two workspaces. Pass the same value on each call. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
open_postEverything about one post in a single call: the text, the whole reply thread, and its metrics. This is the right tool when someone hands you a post link. Replies or metrics can come back null if the platform refused just that part.Everything about one post in a single call: the text, the whole reply thread, and its metrics. This is the right tool when someone hands you a post link. Replies or metrics can come back null if the platform refused just that part.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_postOne publish: per-target status and the reason any target failed. For a post link you probably want open_post instead.One publish: per-target status and the reason any target failed. For a post link you probably want open_post instead.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
retry_postRetry the targets that failed on a publish. Targets that already went out are left alone. Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_limited with retryAfterSeconds. Do not call again before that, the draft is already in Naver. Naver Blog asks which fo…Retry the targets that failed on a publish. Targets that already went out are left alone. Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_limited with retryAfterSeconds. Do not call again before that, the draft is already in Naver. Naver Blog asks which fo…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
update_postChange a scheduled or draft post before it goes out: content, mediaIds, accountIds, Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_limited with retryAfterSeconds. Do not call again before that, the draft is already in Naver. Naver Blog asks which form to…Change a scheduled or draft post before it goes out: content, mediaIds, accountIds, Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_limited with retryAfterSeconds. Do not call again before that, the draft is already in Naver. Naver Blog asks which form to…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| content | string | New post text. |
| accountIds | array | New target accounts, from select_channels. Replaces the current set. |
| mediaIds | array | New media, in order. Replaces the current set. |
| options | object | Per-channel settings, same shape as on publish. Replaces the whole object. |
| scheduledAt | string | null | New send time (ISO 8601 with offset, 10 minutes to 365 days out), or null to keep the post as a draft instead. |
| draft | boolean | true turns a scheduled post back into a draft. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
publish_nowSend a scheduled or draft post right now instead of waiting. Returns while it is still publishing, like publish; pass wait: true to hold for the result. A draft needs at least one target account first. Posts that already went out return post_not_editable.Send a scheduled or draft post right now instead of waiting. Returns while it is still publishing, like publish; pass wait: true to hold for the result. A draft needs at least one target account first. Posts that already went out return post_not_editable.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| wait | boolean | Hold the response until the post is really out, same as on publish. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
delete_postprivilégiéDelete a post from the channel for good. This is not reversible, so confirm with the person first. Daily delete limits differ per channel: Threads 100 a day, Instagram only on accounts connected via Facebook, with no documented daily cap, YouTube 20 a day, Facebook 50 a day, Bluesky 35000 a day, Te…Delete a post from the channel for good. This is not reversible, so confirm with the person first. Daily delete limits differ per channel: Threads 100 a day, Instagram only on accounts connected via Facebook, with no documented daily cap, YouTube 20 a day, Facebook 50 a day, Bluesky 35000 a day, Te…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_repliesThe whole reply thread under a post, nested replies included. `truncated` tells you we stopped before the end. The count here can differ from the replies metric in get_insights, which is normal.The whole reply thread under a post, nested replies included. `truncated` tells you we stopped before the end. The count here can differ from the replies metric in get_insights, which is normal.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
replyrisque d’injectionReply to a post or to a reply. Leave replyTo empty to reply to the post itself; pass a reply id from list_replies to nest a reply under that reply.Like publish, this returns before the reply is live. Call get_post with the returned id to see the final status and link.Reply to a post or to a reply. Leave replyTo empty to reply to the post itself; pass a reply id from list_replies to nest a reply under that reply.Like publish, this returns before the reply is live. Call get_post with the returned id to see the final status and link.
secret : Exfiltration-shaped instructionNaver Blog only: post it as a secret comment that only the blog owner can read.| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| content* | string | — |
| replyTo | string | Reply id from list_replies. Omit to reply to the post itself. |
| secret | boolean | Naver Blog only: post it as a secret comment that only the blog owner can read. Other channels refuse it. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
likeLike a post, or a reply under it when you pass replyTo. Idempotent: if it is already liked the call succeeds with already: true and nothing is toggled. There is no unlike. Naver Blog only today; other channels answer not_supported. On Naver Blog the post can belong to another blog: pass its link an…Like a post, or a reply under it when you pass replyTo. Idempotent: if it is already liked the call succeeds with already: true and nothing is toggled. There is no unlike. Naver Blog only today; other channels answer not_supported. On Naver Blog the post can belong to another blog: pass its link an…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| replyTo | string | Reply id from list_replies to like that reply instead of the post. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
followFollow an account on the channel. Naver Blog only today: adds the blog as a neighbor. mutual: true sends a mutual-neighbor request that the other blog has to accept, so the result is pending until they do; without it the blog is added as a plain neighbor right away. Already a neighbor comes back as…Follow an account on the channel. Naver Blog only today: adds the blog as a neighbor. mutual: true sends a mutual-neighbor request that the other blog has to accept, so the result is pending until they do; without it the blog is added as a plain neighbor right away. Already a neighbor comes back as…
| Paramètre | Type | Description |
|---|---|---|
| blog* | string | The blog to follow: its id (the part after blog.naver.com/) or any link to it. |
| mutual | boolean | true for a mutual-neighbor request. Default false. |
| message | string | Message sent with a mutual request. Naver shows it to the other blog. Ignored otherwise. |
| accountId | string | Which connected account to act as. Only needed when the workspace has more than one Naver Blog. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
hide_replyHide a reply on the channel, or show it again with hide: false. The reply id comes from list_replies, and postId is the publish it belongs to.Hide a reply on the channel, or show it again with hide: false. The reply id comes from list_replies, and postId is the publish it belongs to.
| Paramètre | Type | Description |
|---|---|---|
| replyId* | string | Reply id from list_replies |
| postId* | string | The post the reply sits under. A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links w… |
| hide | boolean | true hides it, false shows it again. Defaults to true. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
delete_replyprivilégiéDelete a comment for good. This is not hide_reply: it cannot be undone. What it reaches differs by channel and list_platforms says which ones support it at all. On Instagram and Facebook it removes anyone's comment on your post; on Threads and Bluesky a reply is itself a post, so it only removes re…Delete a comment for good. This is not hide_reply: it cannot be undone. What it reaches differs by channel and list_platforms says which ones support it at all. On Instagram and Facebook it removes anyone's comment on your post; on Threads and Bluesky a reply is itself a post, so it only removes re…
| Paramètre | Type | Description |
|---|---|---|
| replyId* | string | Reply id from list_replies |
| postId* | string | The post the reply sits under. A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links w… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_insightsViews, likes, replies, reposts, quotes and shares for one publish. Views and shares can be null when the platform does not report them yet — null is not zero.Views, likes, replies, reposts, quotes and shares for one publish. Views and shares can be null when the platform does not report them yet — null is not zero.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | A publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the ch… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
describe_grammarHow to write the body for a channel that has its own markup. Naver Blog has one; every other platform returns not_supported, which is not an error to work around. Call this before writing a Naver Blog body for the first time, or whenever you want something the basics do not cover: highlighting a ph…How to write the body for a channel that has its own markup. Naver Blog has one; every other platform returns not_supported, which is not an error to work around. Call this before writing a Naver Blog body for the first time, or whenever you want something the basics do not cover: highlighting a ph…
| Paramètre | Type | Description |
|---|---|---|
| platform* | string | Platform id, e.g. naver_blog. Only naver_blog has body markup today. |
| topic | string | Which section. overview (default) sketches the whole thing; directives, attributes, inline, blocks, highlight, media and limits go deep. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
naver_layoutNaver Blog only. Shows how publish will lay the body out before anything goes out. By default (layout: template) publish reshapes the markdown into the blog's house form: #/## titles become underlined quote headings, a thin rule sits between sections, photos you did not place with media: references…Naver Blog only. Shows how publish will lay the body out before anything goes out. By default (layout: template) publish reshapes the markdown into the blog's house form: #/## titles become underlined quote headings, a thin rule sits between sections, photos you did not place with media: references…
| Paramètre | Type | Description |
|---|---|---|
| content* | string | The markdown body you plan to publish. |
| mediaIds | array | The media ids you will attach. Photos not referenced in the body get placed. |
| form | string | Form preset id (default photo-story). GET /v1/naver/forms lists them. |
| forms | — | "all" for every preset, or a list of preset ids. Returns layouts[] instead of one layout. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
bridge_statusNaver Blog only. Posts to Naver Blog are written by the uplika browser extension inside the user's own Chrome, so nothing goes out while that Chrome is closed. Call this before publishing to Naver Blog. If online is false, the response carries wake commands per OS that open Chrome on the user's com…Naver Blog only. Posts to Naver Blog are written by the uplika browser extension inside the user's own Chrome, so nothing goes out while that Chrome is closed. Call this before publishing to Naver Blog. If online is false, the response carries wake commands per OS that open Chrome on the user's com…
| Paramètre | Type | Description |
|---|---|---|
| accountId | string | Limit to one Naver Blog account. Omit to cover every connected Naver Blog account. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_publish_optionsWhat a channel needs to know before you publish to it. Only TikTok has this today; every other channel returns not_supported, which is not an error to work around. For TikTok it returns the creator nickname the post will go out as, the privacy levels this account may use right now, whether it can p…What a channel needs to know before you publish to it. Only TikTok has this today; every other channel returns not_supported, which is not an error to work around. For TikTok it returns the creator nickname the post will go out as, the privacy levels this account may use right now, whether it can p…
| Paramètre | Type | Description |
|---|---|---|
| accountId* | string | The connected account to ask about. Required: these values are per account. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_quotaHow much of the 24 hour allowance is already used for posts, replies and deletes. Check this before a burst of publishing. This is live usage from the platform, not the static limits in list_platforms. We also cap how fast one account can publish, so publish can return rate_limited even when the pl…How much of the 24 hour allowance is already used for posts, replies and deletes. Check this before a burst of publishing. This is live usage from the platform, not the static limits in list_platforms. We also cap how fast one account can publish, so publish can return rate_limited even when the pl…
| Paramètre | Type | Description |
|---|---|---|
| accountId | string | Limit to one account. Omit to cover every connected channel. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
refresh_accountRe-read one connected channel's metadata. On Naver Blog this re-reads the blog's categories through the user's browser extension and waits up to a minute for it; list_accounts then shows the new list under naverBlog.categories. Call this when a category the person mentions is not in list_accounts y…Re-read one connected channel's metadata. On Naver Blog this re-reads the blog's categories through the user's browser extension and waits up to a minute for it; list_accounts then shows the new list under naverBlog.categories. Call this when a category the person mentions is not in list_accounts y…
| Paramètre | Type | Description |
|---|---|---|
| accountId* | string | The account id from list_accounts. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
media_presignStep 1 of attaching an image or video. Returns a media id and a one-time uploadUrl. PUT the file bytes to uploadUrl with the same contentType, then call media_complete. Images: image/jpeg, image/png, image/webp, image/gif, up to 20MB. Video: video/mp4, video/quicktime, video/webm, up to 8GB, 43200…Step 1 of attaching an image or video. Returns a media id and a one-time uploadUrl. PUT the file bytes to uploadUrl with the same contentType, then call media_complete. Images: image/jpeg, image/png, image/webp, image/gif, up to 20MB. Video: video/mp4, video/quicktime, video/webm, up to 8GB, 43200…
| Paramètre | Type | Description |
|---|---|---|
| fileName* | string | — |
| contentType* | string | image/jpeg or image/png or image/webp or image/gif or video/mp4 or video/quicktime or video/webm |
| bytes* | number | File size in bytes |
| width | number | Pixel width, if you know it |
| height | number | Pixel height, if you know it |
| altText | string | What the image shows, for people using screen readers. Write it whenever you can see the image. Applied to carousel items. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
media_from_urlAttach an image or video that is already on the public web. We download it, copy it into our storage and give you a media id you can pass to publish. One step, no upload needed. https only. Google Drive and Dropbox **share** links do not work: they return an HTML preview page, not the file. Use a d…Attach an image or video that is already on the public web. We download it, copy it into our storage and give you a media id you can pass to publish. One step, no upload needed. https only. Google Drive and Dropbox **share** links do not work: they return an HTML preview page, not the file. Use a d…
| Paramètre | Type | Description |
|---|---|---|
| url* | string | Public https URL of the image or video file itself. |
| altText | string | What the image shows, for people using screen readers. Applied to carousel items. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
media_upload_linkprivilégiéAsk the person to upload files from their own device. Returns a short-lived link. **Give the link to the person, then wait.** Poll media_upload_status with the token until it returns ready, and only then call publish with the media ids it gives you. Do not publish before the status is ready. Use th…Ask the person to upload files from their own device. Returns a short-lived link. **Give the link to the person, then wait.** Poll media_upload_status with the token until it returns ready, and only then call publish with the media ids it gives you. Do not publish before the status is ready. Use th…
| Paramètre | Type | Description |
|---|---|---|
| note | string | One line shown on the upload page, e.g. what you need them to upload. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
media_upload_statusprivilégiéHas the person uploaded yet? Returns waiting, ready or expired, plus every media id uploaded through that link. Pass those ids to publish as mediaIds. Ready images also come back as image blocks so you can SEE each photo and place it in the right paragraph: previewIds[i] is the media id of the i-th…Has the person uploaded yet? Returns waiting, ready or expired, plus every media id uploaded through that link. Pass those ids to publish as mediaIds. Ready images also come back as image blocks so you can SEE each photo and place it in the right paragraph: previewIds[i] is the media id of the i-th…
| Paramètre | Type | Description |
|---|---|---|
| token* | string | The token from media_upload_link. |
| offset | integer | Skip this many images before returning previews (default 0). |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
media_completeStep 2 of attaching an image or video. Call it after the upload finishes. We check the file really landed before marking it ready. Only a ready media id can be passed to publish.Step 2 of attaching an image or video. Call it after the upload finishes. We check the file really landed before marking it ready. Only a ready media id can be passed to publish.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | Media id from media_presign |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_automation_templatesReady-made automation templates with the params each one takes. Read this before create_automation. Every template lists the channels it works on. The most used one is comment_to_dm: a comment on a post gets one private reply with a button, and tapping it delivers a link or file inside the messagin…Ready-made automation templates with the params each one takes. Read this before create_automation. Every template lists the channels it works on. The most used one is comment_to_dm: a comment on a post gets one private reply with a button, and tapping it delivers a link or file inside the messagin…
| Paramètre | Type | Description |
|---|---|---|
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_automationsAutomations on the connected accounts: name, channel, whether it is live or a draft, triggers, run count. Use get_automation to read one flow's document.Automations on the connected accounts: name, channel, whether it is live or a draft, triggers, run count. Use get_automation to read one flow's document.
| Paramètre | Type | Description |
|---|---|---|
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_automationOne automation as a document: triggers, nodes, start. Also returns version, which put_automation needs, and templateParams when the flow still has its template shape.One automation as a document: triggers, nodes, start. Also returns version, which put_automation needs, and templateParams when the flow still has its template shape.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | Automation id from list_automations. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
create_comment_to_dmThe most common automation: when someone comments on a post, DM them. **Creates a draft; nothing goes out until enable_automation.** How Meta works: a DM cannot be started by the account. The only automatic door is a private reply to a comment, one per comment, within 7 days of the comment, and onc…The most common automation: when someone comments on a post, DM them. **Creates a draft; nothing goes out until enable_automation.** How Meta works: a DM cannot be started by the account. The only automatic door is a private reply to a comment, one per comment, within 7 days of the comment, and onc…
| Paramètre | Type | Description |
|---|---|---|
| accountId* | string | Connected Instagram or Facebook account id from list_accounts. |
| post* | — | Our post id, the platform post id, a link to the post, "any", or "next". |
| keywords | array | Trigger words in the comment. Empty means every comment. |
| match | string | — |
| publicReply | array | Optional public replies under the comment; one is picked at random. |
| message* | string | The private reply. One message. |
| buttonTitle | string | Button under the private reply, at most 20 characters. |
| requireFollow | boolean | Instagram only. Deliver only to followers; others are asked to follow and check again. |
| notFollowingMessage | string | — |
| recheckTitle | string | — |
| deliver* | object | What to send after the tap: text, link, and/or a media id. |
| name | string | — |
| enabled | boolean | Default false. Prefer leaving it off and calling enable_automation after the person confirms. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
create_automationCreate an automation from any template in list_automation_templates by passing its params. Creates a draft. For a flow no template covers, build the document yourself and call put_automation on the draft.Create an automation from any template in list_automation_templates by passing its params. Creates a draft. For a flow no template covers, build the document yourself and call put_automation on the draft.
| Paramètre | Type | Description |
|---|---|---|
| accountId* | string | Connected account id from list_accounts. |
| templateId* | string | Template id from list_automation_templates. |
| params* | object | The template's params. |
| name | string | — |
| enabled | boolean | Default false. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
put_automationReplace an automation's whole document. Pass the version you got from get_automation; a stale version is refused with version_conflict so a concurrent edit is not overwritten. Node types: send (mode window | private_reply | public_reply), condition, action, delay, random, goto, ai. Waiting is a sen…Replace an automation's whole document. Pass the version you got from get_automation; a stale version is refused with version_conflict so a concurrent edit is not overwritten. Node types: send (mode window | private_reply | public_reply), condition, action, delay, random, goto, ai. Waiting is a sen…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| version* | integer | — |
| name | string | — |
| doc* | object | One automation flow. triggers start it, nodes are the steps, start names the first node. Waiting is not a node: a send node with buttons and next: null waits f… |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
enable_automationTurn an automation live. **This is the moment messages start going to real people.** Confirm with the person first. Refuses with reconsent_required if the account was connected before DM permissions, and warns if the account is not subscribed to webhooks.Turn an automation live. **This is the moment messages start going to real people.** Confirm with the person first. Refuses with reconsent_required if the account was connected before DM permissions, and warns if the account is not subscribed to webhooks.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
disable_automationStop an automation. Runs already waiting for a button stay waiting but nothing new starts.Stop an automation. Runs already waiting for a button stay waiting but nothing new starts.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_automation_runsRuns of one automation with their status and a step log. Status names why a run stopped: blocked_window (24-hour window closed), blocked_opt_out, blocked_paused (a person is handling that conversation), blocked_burst, failed_channel, expired, superseded, waiting, done.Runs of one automation with their status and a step log. Status names why a run stopped: blocked_window (24-hour window closed), blocked_opt_out, blocked_paused (a person is handling that conversation), blocked_burst, failed_channel, expired, superseded, waiting, done.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| limit | integer | — |
| before | string | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_conversationsThe inbox: DM conversations on Instagram and Facebook and mention threads on Threads. Each item says whether the 24-hour window is open and how long is left. state: open (default) or closed. kind: dm or mention.The inbox: DM conversations on Instagram and Facebook and mention threads on Threads. Each item says whether the 24-hour window is open and how long is left. state: open (default) or closed. kind: dm or mention.
| Paramètre | Type | Description |
|---|---|---|
| state | string | — |
| kind | string | — |
| unread | boolean | — |
| accountId | string | — |
| search | string | — |
| limit | integer | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
read_conversationOne conversation with its recent messages and the contact: name, whether they follow the account (Instagram only), tags, opt-out. AI drafts waiting for approval show as status draft.One conversation with its recent messages and the contact: name, whether they follow the account (Instagram only), tags, opt-out. AI drafts waiting for approval show as status draft.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
send_dmSend a message in a conversation as the account. **Only inside the 24-hour window** after the person's last message; outside it the call is refused with window_closed and nothing can be done until they write again. On a mention thread (Threads) this posts a public reply. Pass draftId to send an AI…Send a message in a conversation as the account. **Only inside the 24-hour window** after the person's last message; outside it the call is refused with window_closed and nothing can be done until they write again. On a mention thread (Threads) this posts a public reply. Pass draftId to send an AI…
| Paramètre | Type | Description |
|---|---|---|
| id* | string | Conversation id from list_conversations. |
| text | string | — |
| mediaId | string | Optional media id from media_presign. |
| draftId | string | Message id of an AI draft to send instead of new text. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
get_contactOne contact: name, username, whether they follow the account and whether it follows them (Instagram only, and only for people who have messaged), follower count, tags, opt-out, and when the messaging window closes. Follower lists do not exist on any channel; this is the closest thing.One contact: name, username, whether they follow the account and whether it follows them (Instagram only, and only for people who have messaged), follower count, tags, opt-out, and when the messaging window closes. Follower lists do not exist on any channel; this is the closest thing.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | — |
| refresh | boolean | Re-read the profile from the channel first. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
list_mentionsThreads posts that mention the connected account, delivered by webhook. Same shape as list_conversations with kind mention. Reply with send_dm, which posts publicly.Threads posts that mention the connected account, delivered by webhook. Same shape as list_conversations with kind mention. Reply with send_dm, which posts publicly.
| Paramètre | Type | Description |
|---|---|---|
| accountId | string | — |
| unread | boolean | — |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
approve_replyThreads only: approve (or ignore) a reply held by reply approval on one of the account's posts. Approving makes it public. Read the queue with pending: true.Threads only: approve (or ignore) a reply held by reply approval on one of the account's posts. Approving makes it public. Read the queue with pending: true.
| Paramètre | Type | Description |
|---|---|---|
| accountId* | string | — |
| replyId | string | Omit to list the pending queue instead. |
| approve | boolean | Default true. |
| workspaceId | string | Which workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decide… |
45 outils sur 45 ont publié une description.
Les noms et descriptions d’outils sont écrits par l’éditeur et affichés tels quels, comme du texte inerte. Ce sont les chaînes qu’un client MCP transmet à un modèle, alors Forge y recherche des motifs d’injection de prompt — tout constat apparaît avec l’analyse de sécurité ci-dessus. « Privilégié » est une correspondance de mot-clé sur le nom de l’outil, pas un audit de ce qu’il fait : un nom anodin peut tout de même tout faire.
Publish to social channels from your AI agent. Threads is live; nine more await review.
+ 5 de plus observés sur cette entrée.
Les noms cliquables ouvrent l’index Forge de toutes les entrées observées exposant cet outil. Parcourir tous les outils indexés.
Cette entrée ne publie aucun paquet npm : Forge n'a donc pas d'arbre de dépendances pour elle. C'est une lacune de couverture — pas une affirmation qu'elle n'a aucune dépendance.