{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_8a8gbfdybvp4","handle":"uplika","url":"https://wellknown.network/agents/uplika","links":{"self":"https://wellknown.network/agents/uplika/record.json","html":"https://wellknown.network/agents/uplika","markdown":"https://wellknown.network/agents/uplika/record.md","api":"https://wellknown.network/api/v1/agents/uplika","status":"https://wellknown.network/api/v1/agents/uplika/status","claim":"https://wellknown.network/agents/uplika/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/uplika/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:api.uplika.com:server:uplika","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"uplika","summary":"Publish to social channels from your AI agent. Threads is live; nine more await review.","description":"Publish to social channels from your AI agent. Threads is live; nine more await review.","publisher":{"name":"com.uplika","url":null},"homepage":"https://uplika.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.uplika.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-09T16:48:34.767712Z","publishedAt":"2026-08-09T16:48:34.767712Z","registryName":"com.uplika/uplika"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.911,"provenance":"derived"}],"categories":["communication","content"]},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-09-06T00:27:33.454Z","lastProbedAt":"2026-09-06T00:27:33.454Z","statusComputedAt":"2026-09-06T00:28:16.306Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":908},"latestObservations":[{"at":"2026-09-06T00:27:33.454Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":908,"error":null,"detail":{"tools":[{"name":"list_accounts","description":"Connected social accounts. **Call this before publishing anything.** Each item has id, platform (threads etc.), handle and status. The accountIds you pass to pu"},{"name":"select_channels","description":"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 th"},{"name":"list_platforms","description":"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"},{"name":"list_posts","description":"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"},{"name":"list_channel_posts","description":"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 ca"},{"name":"publish","description":"Post to social channels. Channels open today: threads, instagram, youtube, facebook. Get accountIds from select_channels — do not guess which channel the person"},{"name":"open_post","description":"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. Replie"},{"name":"get_post","description":"One publish: per-target status and the reason any target failed. For a post link you probably want open_post instead."},{"name":"retry_post","description":"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"},{"name":"delete_post","description":"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, In"},{"name":"list_replies","description":"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"},{"name":"reply","description":"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,"},{"name":"hide_reply","description":"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."},{"name":"get_insights","description":"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."},{"name":"get_quota","description":"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,"},{"name":"media_presign","description":"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_c"},{"name":"media_from_url","description":"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, "},{"name":"media_upload_link","description":"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 "},{"name":"media_upload_status","description":"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."},{"name":"media_complete","description":"Step 2 of attaching an image. 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"}],"toolCount":20,"serverName":"uplika","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_accounts","description":"Connected social accounts. **Call this before publishing anything.** Each item has id, platform (threads etc.), handle and status. The accountIds you pass to pu"},{"name":"select_channels","description":"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 th"},{"name":"list_platforms","description":"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"},{"name":"list_posts","description":"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"},{"name":"list_channel_posts","description":"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 ca"},{"name":"publish","description":"Post to social channels. Channels open today: threads, instagram, youtube, facebook. Get accountIds from select_channels — do not guess which channel the person"},{"name":"open_post","description":"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. Replie"},{"name":"get_post","description":"One publish: per-target status and the reason any target failed. For a post link you probably want open_post instead."},{"name":"retry_post","description":"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"},{"name":"delete_post","description":"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, In"},{"name":"list_replies","description":"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"},{"name":"reply","description":"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,"},{"name":"hide_reply","description":"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."},{"name":"get_insights","description":"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."},{"name":"get_quota","description":"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,"},{"name":"media_presign","description":"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_c"},{"name":"media_from_url","description":"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, "},{"name":"media_upload_link","description":"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 "},{"name":"media_upload_status","description":"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."},{"name":"media_complete","description":"Step 2 of attaching an image. 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"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.uplika/uplika","url":"https://registry.modelcontextprotocol.io/v0/servers/com.uplika%2Fuplika","firstSeenAt":"2026-09-05T22:18:27.309Z","fetchedAt":"2026-09-05T22:18:27.309Z","normalizedAt":"2026-09-05T22:18:27.309Z"}]},"firstSeenAt":"2026-09-05T22:18:27.309Z","updatedAt":"2026-09-06T00:28:25.152Z"}