Connect uplika and your agent gets 20 tools, among them delete_post, get_insights, get_post. It answers at https://api.uplika.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Your AI agent publishes to Threads, Instagram, YouTube and the other social channels you connect.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
delete_post | 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, Y Inputs: id, workspaceId |
get_insights | 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. Inputs: id, workspaceId |
get_post | One publish: per-target status and the reason any target failed. For a post link you probably want open_post instead. Inputs: id, workspaceId |
get_quota | 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 p Inputs: accountId, workspaceId |
hide_reply | 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. Inputs: replyId, postId, hide, workspaceId |
list_accounts | 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 Inputs: workspaceId |
list_channel_posts | 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. Inputs: accountId, limit, workspaceId |
list_platforms | 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 is one of three: live means anyone can connect; bet Inputs: workspaceId |
list_posts | Recent publishes made through us and the per-target status of each. 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 to keep going. Posts that Inputs: status, limit, before, workspaceId |
list_replies | 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. Inputs: id, workspaceId |
media_complete | 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. Inputs: id, workspaceId |
media_from_url | 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 wo Inputs: url, altText, workspaceId |
media_presign | 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 10MB. Video Inputs: fileName, contentType, bytes, width, height, altText |
media_upload_link | 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 g Inputs: note, workspaceId |
media_upload_status | 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. Inputs: token, workspaceId |
open_post | 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. Inputs: id, workspaceId |
publish | Post to social channels. Channels open today: threads, instagram, youtube, facebook, bluesky, telegram, naver_blog. Get accountIds from select_channels — do not guess which channel the person meant. Text limits differ per channel: Threads 5 |
reply | 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 se Inputs: id, content, replyTo, workspaceId |
retry_post | Retry the targets that failed on a publish. Targets that already went out are left alone, so this never double-posts. If nothing failed you get nothing_to_retry. Only applies to posts published through us. Inputs: id, workspaceId |
select_channels | 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 platfor Inputs: scope, workspaceId |
Every block below points at https://api.uplika.com/mcp. Pick your client and copy.
claude mcp add --transport http uplika https://api.uplika.com/mcp
{
"mcpServers": {
"uplika": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.uplika.com/mcp"]
}
}
}{
"mcpServers": {
"uplika": {
"url": "https://api.uplika.com/mcp"
}
}
}{
"servers": {
"uplika": {
"type": "http",
"url": "https://api.uplika.com/mcp"
}
}
}{
"context_servers": {
"uplika": {
"url": "https://api.uplika.com/mcp"
}
}
}{
"mcpServers": {
"uplika": {
"serverUrl": "https://api.uplika.com/mcp"
}
}
}{
"mcpServers": {
"uplika": {
"url": "https://api.uplika.com/mcp"
}
}
}name: uplika
version: 0.0.1
schema: v1
mcpServers:
- name: uplika
type: streamable-http
url: https://api.uplika.com/mcp{
"mcpServers": {
"uplika": {
"httpUrl": "https://api.uplika.com/mcp"
}
}
}{
"mcpServers": {
"uplika": {
"type": "http",
"url": "https://api.uplika.com/mcp"
}
}
}{
"mcpServers": {
"uplika": {
"url": "https://api.uplika.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.uplika.com%2Fmcp&type=streamable_http&id=uplika&name=uplika
It answered our last check on 19 October 2026 in 1126 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by uplika.com and served from api.uplika.com, the vendor's own domain: https://api.uplika.com/mcp.
20, as returned by the server's own tools/list on 11 September 2026: delete_post, get_insights, get_post, get_quota, hide_reply, list_accounts, list_channel_posts, list_platforms, and 12 more.
It answered our last check on 19 October 2026 in 1126 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.uplika.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.uplika. Endpoint host: api.uplika.com. ARD identifier: urn:air:com.uplika:mcp:uplika.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.