kinuly•Docs
MCP server

Kinuly in Claude and ChatGPT

Connect Kinuly to your AI assistant once. Then plan, schedule and check every creator’s posts by asking in plain words, and watch them land in your Kinuly calendar.

Server URL
https://kinuly.social/mcp
  • No API key: sign in with your Kinuly account
  • You approve each assistant and what it may do
  • Disconnect anytime from Settings

How it works#

1Add Kinuly to your assistant

Paste the server URL once, in Claude’s or ChatGPT’s connector settings.

2Sign in and approve

Kinuly opens its own sign-in page and asks what the assistant may do: look only, or also make changes.

3Just ask

“Schedule Ava’s week.” The assistant finds her uploads, plans the posts and Kinuly publishes them on time.

Everything stays in your workspace: the same plan limits, quotas and checks apply as when you click through Kinuly yourself, and you can review or change any post in the calendar afterwards.

Connect your assistant#

Pick your assistant. Setup takes about a minute; you need a Kinuly account with a verified email.

  1. Open your connectors
    In Claude on the web or desktop, go to Customize → Connectors and click Add custom connector.
  2. Add Kinuly
    Name it Kinuly and paste https://kinuly.social/mcp. If Claude asks how to sign in, keep Sign in now and Use Claude’s published identity. Click Add.
  3. Sign in and allow
    Click Connect. On the Kinuly page, sign in, leave Allow changes ticked if Claude should schedule posts, and click Allow access.
  4. Use it in a chat
    Click + → Connectors and check that Kinuly is on. Then ask, for example: “What’s scheduled for this week?”
Works on Claude Free (one custom connector), Pro, Max, Team and Enterprise. On Team and Enterprise, an Owner adds Kinuly once in Organization settings → Connectors (Add → Custom → Web); each member then clicks Connect under Customize → Connectors. Claude asks before running actions that change things unless you choose Always allow.

What to ask#

Talk to your assistant the way you’d brief a team member. It picks the right Kinuly tools, and asks you before scheduling a lot or deleting anything.

Plan
“Schedule Ava’s Reels for next week, two a day in the evening, using the clips I uploaded yesterday.”
list_creatorslist_mediaschedule_posts
Plan
“Find the empty days in the next two weeks and fill them from unused uploads. Show me the plan first.”
get_calendarlist_mediaschedule_posts
Fix
“Did anything fail to post this week? Tell me why and reschedule what you can.”
list_postsget_postupdate_post
Edit
“Move Mia’s Saturday Reel to 8 pm and add #summer to the caption.”
list_postsupdate_post
Content
“Add this video to Kinuly and post it on Lena’s account tomorrow at 7 pm: https://…/clip.mp4”
import_mediacreate_post
Results
“Which of Mia’s Reels did best last month, and when does she get the most views?”
get_insightsget_best_times

Ready-made prompts

Assistants that support MCP prompts offer these shortcuts in their chat menu.

PromptWhat it does
Plan a creator’s weekplan_weekPlan and schedule next week’s posts for one creator from their unused uploads.
Weekly reportweekly_reportSummarize the last 7 days across the roster: what went out, what failed, what performed best.
Fill empty daysfill_gapsFind days with nothing scheduled and propose posts from unused content.
Assistants that display interactive results (MCP Apps) show scheduling and calendar results as a Kinuly week view in the conversation. Others show the same information as text.

Tools reference#

Kinuly gives assistants 16 tools. You never call them yourself; this is what your assistant can do on your behalf, and what each one needs.

Workspace

Workspace overviewget_workspaceRead only

Summary of the Kinuly workspace: plan and whether it is active, posts used and left this month, creators connected and allowed, scheduled and failing posts, the usual time zone, and links to each page. Call this first when you need context.

Try“How many posts do we have left this month?”

No parameters.

Creators

Find creatorslist_creatorsRead only

Lists the Instagram accounts (creators) connected to the workspace, with their IDs, @usernames, connection status and post counts. Use it to turn a name like “Ava” into a creator_id. Only creators with status connected can publish.

Try“Which creators need to be reconnected?”

ParameterTypeDescription
searchstringPart of a name or @username.
statusall · connected · needs_attention · disconnectedneeds_attention = the account must be reconnected or is being updated. Default: "all".
pagenumber 1–10000Page number, starting at 1. Default: 1.

Content

List uploadslist_mediaRead only

Lists videos and images in the content library, newest first, with how many posts already use each one. Filter with uploaded_after for “the clips I uploaded yesterday” and unused_only to find content that hasn’t been scheduled yet.

Try“What did I upload yesterday that isn’t scheduled yet?”

ParameterTypeDescription
typeall · video · imageDefault: "all".
unused_onlybooleanOnly media that no draft or scheduled post uses. Default: false.
uploaded_afterstringA date (2026-10-05, read in the workspace zone) or an ISO 8601 date-time.
searchstringPart of the file name.
pagenumber 1–10000Page number, starting at 1. Default: 1.
limitnumber 1–100Default: 50.
Import media from a linkimport_mediaMakes changes

Adds a video or image to the content library from a public HTTPS link (a direct file URL, not a web page). Videos: MP4 or MOV, H.264 or HEVC, 3 s to 15 min, up to 4K. Images: JPEG, PNG or WebP. 100 MB maximum. Returns the new media ID.

Try“Add this video to Kinuly: https://cdn.example.com/clip.mp4”

ParameterTypeDescription
urlrequiredstringDirect HTTPS link to the file.
namestringFile name to show in Kinuly.
Delete mediadelete_mediaCan’t be undone

Permanently deletes a file from the content library. Refused while a draft or scheduled post uses it. Ask the user before deleting.

Try“Delete the duplicate beach clip.”

ParameterTypeDescription
media_idrequiredIDMedia ID (a UUID returned by Kinuly).

Posts

List postslist_postsRead only

Lists posts with their status, creator, time and caption. Statuses: draft, scheduled, publishing, published, needs_attention (failed or blocked: check the error), cancelled. Filter by creator and by a from/to range.

Try“Did anything fail to post this week?”

ParameterTypeDescription
statusall · draft · scheduled · publishing · published · needs_attention · cancelledall excludes cancelled posts. Default: "all".
creator_idIDCreator ID (a UUID returned by Kinuly).
fromstringA date (2026-10-05, read in the workspace zone) or an ISO 8601 date-time.
tostringEnd of the range. A plain date includes that whole day.
pagenumber 1–10000Page number, starting at 1. Default: 1.
limitnumber 1–100Default: 50.
Post detailsget_postRead only

Everything about one post: full caption, media, schedule, status, error and, once published, its Instagram link and statistics.

Try“Why did Mia’s Tuesday Reel fail?”

ParameterTypeDescription
post_idrequiredIDPost ID (a UUID returned by Kinuly).
Show calendarget_calendarRead onlyCalendar view

The publishing calendar day by day: every post with its local time, creator and status. Defaults to the next 7 days for the whole roster. Use it to spot empty days before planning.

Try“Show me next week for the whole roster.”

ParameterTypeDescription
start_datedateFirst day (YYYY-MM-DD). Defaults to today.
daysnumber 1–31Default: 7.
creator_idIDCreator ID (a UUID returned by Kinuly).
timezonestringIANA time zone such as Europe/Paris or America/New_York. Defaults to the workspace’s usual zone (see get_workspace).
Create postcreate_postMakes changes

Creates one Reel, photo or carousel for a connected creator. action=draft saves it unscheduled; action=schedule publishes it automatically at scheduled_at (within 90 days); action=publish_now posts it within a minute. Each scheduled post counts toward the monthly quota.

Try“Post the gym clip on Ava’s account tomorrow at 7 pm.”

ParameterTypeDescription
creator_idrequiredIDCreator ID (a UUID returned by Kinuly).
media_idsrequiredID list (max 10)Media IDs from list_media or import_media, in display order.
captionstringInstagram caption, up to 2,200 characters, hashtags included.
titlestringInternal name shown in Kinuly’s calendar, never published. Defaults to the start of the caption or the file name.
kindreel · image · carouselreel = one video, image = one photo, carousel = 2–10 items. Inferred from the media when omitted.
actiondraft · schedule · publish_nowDefaults to schedule when scheduled_at is set, otherwise draft.
scheduled_atstringISO 8601 date-time. With an offset (2026-10-05T18:30:00+02:00) it is exact; without one (2026-10-05T18:30) it is read in the given time zone.
timezonestringIANA time zone such as Europe/Paris or America/New_York. Defaults to the workspace’s usual zone (see get_workspace).
Schedule postsschedule_postsMakes changesCalendar view

Schedules up to 50 posts in one go, e.g. a creator’s whole week. Each post is checked and scheduled on its own; the result says which succeeded and why any failed, so you can fix and retry only those. Confirm the plan with the user before scheduling many posts.

Try“Schedule Ava’s Reels for next week, two a day in the evening.”

ParameterTypeDescription
postsrequiredlist of posts (max 50)
posts[].creator_idrequiredIDCreator ID (a UUID returned by Kinuly).
posts[].media_idsrequiredID list (max 10)Media IDs from list_media or import_media, in display order.
posts[].captionstringInstagram caption, up to 2,200 characters, hashtags included.
posts[].titlestringInternal name shown in Kinuly’s calendar, never published. Defaults to the start of the caption or the file name.
posts[].kindreel · image · carouselreel = one video, image = one photo, carousel = 2–10 items. Inferred from the media when omitted.
posts[].scheduled_atrequiredstringISO 8601 date-time. With an offset (2026-10-05T18:30:00+02:00) it is exact; without one (2026-10-05T18:30) it is read in the given time zone.
posts[].timezonestringIANA time zone such as Europe/Paris or America/New_York. Defaults to the workspace’s usual zone (see get_workspace).
timezonestringZone for every post that doesn’t set its own.
Edit postupdate_postMakes changes

Changes a draft, scheduled, failed or blocked post: caption, title, media, creator or time. Only the fields you pass change. action=draft unschedules it, action=schedule (re)schedules it. Posts already sent to Instagram can’t be edited.

Try“Move Saturday’s Reel to 8 pm and add #summer.”

ParameterTypeDescription
post_idrequiredIDPost ID (a UUID returned by Kinuly).
captionstringInstagram caption, up to 2,200 characters, hashtags included.
titlestringInternal name shown in Kinuly’s calendar, never published. Defaults to the start of the caption or the file name.
media_idsID list (max 10)Media IDs from list_media or import_media, in display order.
creator_idIDCreator ID (a UUID returned by Kinuly).
kindreel · image · carouselreel = one video, image = one photo, carousel = 2–10 items. Inferred from the media when omitted.
scheduled_atstringISO 8601 date-time. With an offset (2026-10-05T18:30:00+02:00) it is exact; without one (2026-10-05T18:30) it is read in the given time zone.
timezonestringIANA time zone such as Europe/Paris or America/New_York. Defaults to the workspace’s usual zone (see get_workspace).
actionkeep · draft · schedulekeep leaves a scheduled post scheduled and a draft a draft. Default: "keep".
Cancel postcancel_postCan’t be undone

Cancels a draft or scheduled post so it never publishes, and gives its quota back. Posts already sent to Instagram can’t be cancelled. Ask the user first.

Try“Cancel everything scheduled for Lena on Friday.”

ParameterTypeDescription
post_idrequiredIDPost ID (a UUID returned by Kinuly).

Insights

Post statisticsget_insightsRead only

Statistics Instagram reports for published posts (views, likes, comments and more), newest first, optionally for one creator. Figures refresh automatically; missing values mean Instagram hasn’t reported them yet, not zero.

Try“Which of Mia’s Reels did best last week?”

ParameterTypeDescription
creator_idIDCreator ID (a UUID returned by Kinuly).
pagenumber 1–10000Page number, starting at 1. Default: 1.
Best posting timesget_best_timesRead only

Ranks hours of the day and days of the week by average performance of past posts (views when available), for one creator or the roster. Needs several published posts with statistics; says so when there isn’t enough data instead of guessing.

Try“When should Ava post to get the most views?”

ParameterTypeDescription
creator_idIDCreator ID (a UUID returned by Kinuly).
timezonestringIANA time zone such as Europe/Paris or America/New_York. Defaults to the workspace’s usual zone (see get_workspace).

Permissions & security#

With your approval, assistants can

  • See your creators, posts, uploads, calendar and statistics
  • Upload content, create, schedule, edit and cancel posts (only if you tick Allow changes)

Assistants can never

  • See your password or sign in as you elsewhere
  • Pay, change your plan or touch billing
  • Connect or remove Instagram accounts
  • Change your security settings or reach another workspace
  • You sign in on Kinuly, not in the chat. The connection uses OAuth 2.1 with PKCE: the assistant receives a temporary access key tied to your approval, never your password.
  • Access keys are short-lived. They expire after an hour and renew automatically. Each renewal replaces the previous key, and reusing an old one disconnects the assistant.
  • You stay in control. See and disconnect assistants in Settings → Connected apps. Resetting your password disconnects every assistant at once.
  • The same rules as the app. Plan limits, the monthly quota, account checks and the activity log apply to everything an assistant does.

Teams

On a paid plan, a workspace can have up to five people: the owner plus four invited members. When someone on a team connects an assistant, Kinuly asks which workspace it should work in, and the assistant can only do what that person’s role allows there.

RoleWhat their assistant can do
OwnerEverything in the tools reference: upload content, plan, schedule, edit and cancel posts.
ManagerEverything in the tools reference: upload content, plan, schedule, edit and cancel posts.
AssistantEverything in the tools reference: upload content, plan, schedule, edit and cancel posts. The usual role for VAs.
ViewerLook only: calendar, posts, creators and statistics. Changes are refused.
Removing someone from the team, or their leaving it, disconnects any assistant they connected to that workspace at once. An assistant acts with your access: connect only assistants you trust, and read its plan before confirming large changes.

Limits#

Posts per monthYour plan’s quota, shared with the web app: Free 20 · Starter 500 · Growth 2,000 · Pro 10,000 · Agency 20,000 · Scale 40,000
Scheduling windowUp to 90 days ahead
Posts per requestUp to 50 at once with Schedule posts
VideosMP4 or MOV, H.264 or HEVC, 3 seconds to 15 minutes, up to 4K, 100 MB
ImagesJPEG, PNG or WebP, 100 MB
Storage2 GB per workspace
Requests240 per minute for each connected assistant

Troubleshooting#

Kinuly doesn’t show up in my chat
Turn it on for the conversation: in Claude, + → Connectors; in ChatGPT, + → More.
The sign-in page says the link isn’t valid
Remove Kinuly from your assistant and add it again with the exact URL https://kinuly.social/mcp, ending in /mcp.
Kinuly asks me to finish setting up my account
Confirm your email and complete the workspace setup in Kinuly, then connect from your assistant again.
The assistant says the connection is read-only
You approved it without Allow changes. Disconnect Kinuly in your assistant’s connector settings and connect again with the box ticked.
A post shows “needs attention”
Ask the assistant why: it reads the reason from Kinuly. Usually the creator’s Instagram account needs reconnecting in Kinuly (Creators), or the plan needs renewing.
Times are a few hours off
Tell the assistant your time zone (“I’m in Paris”). Each post keeps the zone it was planned in, and answers include it.
The assistant says there are too many requests
Wait a minute and ask again. Each connection can make 240 requests per minute.

For developers#

Kinuly is a standard remote MCP server, so any compliant client works without special setup.

TransportStreamable HTTP at https://kinuly.social/mcp, stateless, JSON responses. Protocol 2026-07-28 (per-request metadata, server/discover), plus 2025-11-25, 2025-06-18 and 2025-03-26 through initialize.
AuthorizationOAuth 2.1 authorization code with PKCE (S256), resource indicators, rotating refresh tokens, iss in authorization responses. Scopes read and write.
ClientsClient ID Metadata Documents, or dynamic client registration (public or confidential clients).
Metadatahttps://kinuly.social/.well-known/oauth-protected-resource/mcp
https://kinuly.social/.well-known/oauth-authorization-server
Endpoints/oauth/authorize · /oauth/token · /oauth/register · /oauth/revoke
Interactive UIget_calendar and schedule_posts render ui://kinuly/calendar.html (MCP Apps, text/html;profile=mcp-app). Every result also carries text and structuredContent.
Tool hintsEvery tool declares title, readOnlyHint, destructiveHint, idempotentHint and openWorldHint.
Ready to try it?

Start free, connect a creator, then add Kinuly to your assistant.

Start free