The Ordinal connector lets your AI agent act in each user's Ordinal account. Each user connects their own Ordinal access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 56 tools.
- Tools
- 56
- What they doRead · write · destructive
- 29 · 21 · 629 read21 write6 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Ordinal connection
In AgentKit > Connections, create an Ordinal connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'ordinal'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Ordinal:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'ordinal_approvals_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "ordinal"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Ordinal:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="ordinal_approvals_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Ordinal credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolordinal_approvals_listList approval requests across the workspace, filtered by status, post, approver, requester or time.Read-onlyList Workspace Approvals
List approval requests across the workspace, filtered by status, post, approver, requester or time. Returns an approvals array (id, status, isBlocking, message, dueDate, approvedAt, createdAt, updatedAt, user, requestedBy and the post) with a nextCursor for paging. Use this to see what is waiting for review. Use ordinal_post_approvals_list for a single post.
Inputs
approver_idsarray- Only approvals assigned to these user UUIDs.
created_at_maxstring- Only approvals created at or before this date-time (ISO 8601).
created_at_minstring- Only approvals created at or after this date-time (ISO 8601).
cursorstring- Pagination cursor from the previous response's nextCursor, in the form timestampMs:approvalId. Keep the same sort_by and sort_order while paging.
limitinteger- Maximum number of approvals to return (1-100). Defaults to 20 when omitted.
post_idsarray- Only approvals on these post UUIDs.
requested_by_idsarray- Only approvals requested by these user UUIDs.
sort_bystring- Field to sort by: createdAt or updatedAt. Use updatedAt with sort_order asc for incremental sync. Defaults to createdAt.one of
createdAtupdatedAt sort_orderstring- Sort direction. Defaults to desc (newest first).one of
ascdesc statusesarray- Only approvals with these statuses: Requested and/or Approved.
updated_at_maxstring- Only approvals updated at or before this date-time (ISO 8601).
updated_at_minstring- Only approvals updated at or after this date-time (ISO 8601).
ordinal_cpm_getGet the CPM values the workspace uses to calculate earned media value, per platform.Read-onlyGet CPM Values
Get the CPM values the workspace uses to calculate earned media value, per platform. Returns linkedIn, x, instagram, facebook and threads CPM numbers. Use ordinal_cpm_update to change them.
Inputs
This tool takes no inputs.
ordinal_engagement_profiles_listList the engagement-only social profiles in the workspace, which are used for team likes, comments and reposts but not for scheduling.Read-onlyList Engagement Profiles
List the engagement-only social profiles in the workspace, which are used for team likes, comments and reposts but not for scheduling. Returns each profile's id, name, detail, channel, profileImageUrl, isReintegrationRequired, createdAt and createdBy. Use this to find profile ids for ordinal_post_engagements_create. Use ordinal_scheduling_profiles_list for profiles that can publish posts.
Inputs
This tool takes no inputs.
ordinal_idea_getGet one idea from the backlog by id, including its per-channel content.Read-onlyGet Idea
Get one idea from the backlog by id, including its per-channel content. Returns an idea object with id, url, title, channels, status (always Idea), createdAt, updatedAt and the linkedIn, x, tikTok and youTubeShorts content that applies. Use ordinal_ideas_list to find ideas.
Inputs
idea_idstringrequired- ID of the idea (UUID).
ordinal_ideas_listList ideas from the workspace backlog, filtered by channel, profile, label or creation date.Read-onlyList Ideas
List ideas from the workspace backlog, filtered by channel, profile, label or creation date. Returns an ideas array (id, url, title, channels, status, createdAt, updatedAt and per-channel content) plus nextCursor and hasMore. Use this to browse the backlog. Use ordinal_idea_get for one idea and ordinal_posts_list for scheduled posts.
Inputs
channelstring- Only return ideas on this channel: LinkedIn, Twitter, TikTok or YouTubeShorts.one of
LinkedInTwitterTikTokYouTubeShorts created_at_maxstring- Only return ideas created on or before this date-time (ISO 8601).
created_at_minstring- Only return ideas created on or after this date-time (ISO 8601).
cursorstring- Pagination cursor: the id of the last idea from the previous page (use nextCursor from the previous response).
idsstring- Fetch specific ideas by id. A single UUID or several UUIDs separated by commas.
label_idsstring- Only return ideas that have any of these labels. A single UUID or several UUIDs separated by commas.
limitinteger- Maximum number of ideas to return (1-100). Defaults to 20 when omitted.
linkedin_profile_idstring- Only return ideas for this LinkedIn profile UUID.
sort_orderstring- Sort direction. Defaults to desc (newest first).one of
ascdesc tiktok_profile_idstring- Only return ideas for this TikTok profile UUID.
x_profile_idstring- Only return ideas for this X (Twitter) profile UUID.
youtube_profile_idstring- Only return ideas for this YouTube channel profile UUID.
ordinal_instagram_locations_searchSearch for Instagram locations by name so they can be tagged on a post.Read-onlySearch Instagram Locations
Search for Instagram locations by name so they can be tagged on a post. Returns a locations array with pageId, name, address, coordinates, profileImageUrl, link and isVerified. Use the pageId and name in the location object of an Instagram Feed or Reel post.
Inputs
querystringrequired- Location name to search for, at least one character.
ordinal_labels_listList all labels defined in the workspace.Read-onlyList Labels
List all labels defined in the workspace. Returns a labels array with each label's id, name, color, backgroundColor, createdAt and updatedAt. Use this to find label ids for the label_ids input of post and idea tools.
Inputs
This tool takes no inputs.
ordinal_linkedin_followers_analytics_listGet daily follower counts for a LinkedIn profile over a date range.Read-onlyList LinkedIn Follower Growth
Get daily follower counts for a LinkedIn profile over a date range. Returns an array of data points with followerCount and recordedAt. Use ordinal_linkedin_posts_analytics_list for post performance.
Inputs
profile_idstringrequired- ID of the LinkedIn profile (UUID).
end_datestring- End of the reporting window as YYYY-MM-DD. Defaults to today.
start_datestring- Start of the reporting window as YYYY-MM-DD. Defaults to 30 days ago.
ordinal_linkedin_mention_getGet the mention string for a LinkedIn user or company from its username (vanity name).Read-onlyGet LinkedIn Mention Format
Get the mention string for a LinkedIn user or company from its username (vanity name). Returns a user or organization object with username, urn, displayName, and mentionFormat such as @[Acme Inc](urn:li:organization:123456); users also have firstName and firstNameMentionFormat. Paste the mentionFormat into LinkedIn copy of ordinal_post_create to tag someone.
Inputs
usernamestringrequired- LinkedIn username (vanity name) to look up, the part after linkedin.com/in/ or linkedin.com/company/.
ordinal_linkedin_posts_analytics_listGet post-level performance metrics for a LinkedIn profile over a date range.Read-onlyList LinkedIn Post Analytics
Get post-level performance metrics for a LinkedIn profile over a date range. Returns an array of posts with id, url, commentary, type, publishedAt, likeCount, commentCount, shareCount, clickCount, impressionCount, engagement rate, earned media value and the linked Ordinal post when present. Use ordinal_scheduling_profiles_list to find the profile id. Use ordinal_linkedin_followers_analytics_list for follower growth.
Inputs
profile_idstringrequired- ID of the LinkedIn profile (UUID).
end_datestring- End of the reporting window as YYYY-MM-DD. Defaults to today.
start_datestring- Start of the reporting window as YYYY-MM-DD. Defaults to 30 days ago.
ordinal_linkedin_profile_getLook up a LinkedIn person or organization by URN.Read-onlyGet LinkedIn Profile by URN
Look up a LinkedIn person or organization by URN. Returns urn, username (vanity name), name, profileImageUrl and type (User or Organization). Use ordinal_linkedin_mention_get when you only have a username and need a ready-made mention string.
Inputs
urnstringrequired- LinkedIn URN of the person or organization, urn:li:person:<id> or urn:li:organization:<id>.
ordinal_post_approvals_listList the approval requests on a single post.Read-onlyList Post Approvals
List the approval requests on a single post. Returns an approvals array with each approval's id, status (Requested or Approved), isBlocking, message, dueDate, approvedAt, createdAt, user and requestedBy. Use ordinal_approvals_list to search approvals across the whole workspace.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_comments_listList the post-level comments on a post.Read-onlyList Post Comments
List the post-level comments on a post. Returns a comments array with each comment's id, message, postId, createdAt, updatedAt and user (id, firstName, lastName, email). Use ordinal_post_inline_comments_list for comments anchored to highlighted text.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_engagements_listList the planned team engagements (likes, comments, reposts) on a post.Read-onlyList Post Engagements
List the planned team engagements (likes, comments, reposts) on a post. Returns an engagements array with each engagement's id, channel, type, profileId, copy, delaySeconds and reactionType. Use ordinal_post_engagements_create to add engagements.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_getGet one post by id, including its per-channel content and attached assets.Read-onlyGet Post
Get one post by id, including its per-channel content and attached assets. Returns a post object with id, url, title, channels, status, publishDate, publishAt, createdAt, updatedAt, archivedAt, labels and the linkedIn, x, instagram, tikTok and youTubeShorts content that applies. Use ordinal_posts_list to find posts. Use ordinal_post_versions_list for draft history.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_inline_comments_listList text-anchored inline comment threads on a post, optionally by channel or resolution state.Read-onlyList Post Inline Comments
List text-anchored inline comment threads on a post, optionally by channel or resolution state. Returns an inlineComments array; each thread has id, resolved, channel, highlightedText, replies (with user, message, createdAt, reactions), createdAt and updatedAt. Use ordinal_post_comments_list for post-level comments.
Inputs
post_idstringrequired- ID of the post (UUID).
channelstring- Only return threads on this channel.one of
LinkedInTwitterInstagramFacebookThreadsTikTokDiscordSlackWebflowYouTubeShorts resolvedboolean- true for resolved threads only, false for unresolved only. Omit for both.
ordinal_post_slack_boosts_listList the Slack boosts attached to a post, which post a Slack message when the post publishes.Read-onlyList Post Slack Boosts
List the Slack boosts attached to a post, which post a Slack message when the post publishes. Returns a slackBoosts array with each boost's id, copy, isAutoCreated, postId, slackWebhook, createdAt and updatedAt. Use ordinal_slack_boost_get for one boost.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_subscribers_listList the users subscribed to notifications for a post.Read-onlyList Post Subscribers
List the users subscribed to notifications for a post. Returns a subscribers array with each subscriber's id, user (id, firstName, lastName), createdBy and createdAt. Use ordinal_subscribers_create to add subscribers.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_version_content_getRead the plain-text copy of one saved draft version of a post for a channel.Read-onlyGet Post Version Content
Read the plain-text copy of one saved draft version of a post for a channel. Returns postId, channel, versionId and copy. Use ordinal_post_versions_list first to get the versionId.
Inputs
channelstringrequired- Channel whose editor version to read.one of
LinkedInFacebookInstagramTikTokDiscordSlackWebflowYouTubeShorts post_idstringrequired- ID of the post (UUID).
version_idstringrequired- Version id returned by ordinal_post_versions_list.
ordinal_post_versions_listList the saved draft versions of a post's copy, grouped by channel and newest first.Read-onlyList Post Draft Versions
List the saved draft versions of a post's copy, grouped by channel and newest first. Returns postId and a channels array; each channel has versions (id, createdAt, authors) and nextCursor, and may carry an error if that channel's history failed to load. Use this to find a versionId, then ordinal_post_version_content_get to read that version's text.
Inputs
post_idstringrequired- ID of the post (UUID).
channelstring- Only return versions for this channel. Required when cursor is set.one of
LinkedInFacebookInstagramTikTokDiscordSlackWebflowYouTubeShorts cursorstring- Pagination cursor from a previous response's channels[].nextCursor. Requires channel.
limitinteger- Maximum versions returned per channel, newest first (1-100). Defaults to 15.
ordinal_posts_listList posts in the workspace, filtered by status, channel, profile, label or date and sorted by creation or publish time.Read-onlyList Posts
List posts in the workspace, filtered by status, channel, profile, label or date and sorted by creation or publish time. Returns a posts array (id, url, title, channels, status, publishDate, publishAt, labels and per-channel content with assets) plus nextCursor and hasMore for pagination. Use this to browse or search posts. Use ordinal_post_get when you already have a post id.
Inputs
channelstring- Only return posts on this channel: LinkedIn, Twitter, Instagram, TikTok or YouTubeShorts.one of
LinkedInTwitterInstagramTikTokYouTubeShorts created_at_maxstring- Only return posts created on or before this date-time (ISO 8601).
created_at_minstring- Only return posts created on or after this date-time (ISO 8601).
cursorstring- Pagination cursor: the id of the last post from the previous page (use nextCursor from the previous response).
idsstring- Fetch specific posts by id. A single UUID or several UUIDs separated by commas.
instagram_profile_idstring- Only return posts for this Instagram profile UUID.
label_idsstring- Only return posts that have any of these labels. A single UUID or several UUIDs separated by commas.
limitinteger- Maximum number of posts to return (1-100). Defaults to 20 when omitted.
linkedin_profile_idstring- Only return posts for this LinkedIn profile UUID.
publish_date_maxstring- Only return posts scheduled on or before this date-time (ISO 8601).
publish_date_minstring- Only return posts scheduled on or after this date-time (ISO 8601).
sort_bystring- Field to sort by: createdAt or publishAt. Defaults to createdAt.one of
createdAtpublishAt sort_orderstring- Sort direction. Defaults to desc (newest first).one of
ascdesc statusstring- Workflow status of the post: Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled or Posted.one of
TentativeToDoInProgressForReviewBlockedFinalizedScheduledPosted tiktok_profile_idstring- Only return posts for this TikTok profile UUID.
x_profile_idstring- Only return posts for this X (Twitter) profile UUID.
youtube_profile_idstring- Only return posts for this YouTube channel profile UUID.
ordinal_scheduling_profiles_listList the social profiles in the workspace that posts can be scheduled to.Read-onlyList Scheduling Profiles
List the social profiles in the workspace that posts can be scheduled to. Returns each profile's id, name, detail, channel, profileImageUrl, isReintegrationRequired, createdAt, createdBy and isLeadsScrapingEnabled. Use this to find the profile ids needed by ordinal_post_create and analytics tools. Use ordinal_engagement_profiles_list for engagement-only profiles.
Inputs
This tool takes no inputs.
ordinal_slack_boost_getGet one Slack boost by id.Read-onlyGet Slack Boost
Get one Slack boost by id. Returns a slackBoost with id, copy, isAutoCreated, postId, slackWebhook (id, channelName, teamName), createdAt and updatedAt. Use ordinal_post_slack_boosts_list to find boost ids.
Inputs
boost_idstringrequired- ID of the Slack boost (UUID).
ordinal_slack_webhooks_listList the Slack channels (webhooks) connected to the workspace.Read-onlyList Slack Webhooks
List the Slack channels (webhooks) connected to the workspace. Returns a slackWebhooks array with each webhook's id, channelName, teamName, teamIconUrl, notifyByDefault, createdAt and updatedAt. Use this to find the slack_webhook_id for ordinal_slack_boost_create.
Inputs
This tool takes no inputs.
ordinal_upload_getCheck the status of an upload job.Read-onlyGet Upload Status
Check the status of an upload job. Returns id, status (awaiting_upload, pending, processing, ready, failed or expired) and createdAt; when ready it also returns assetId, filename, mimetype, size, width, height, duration, expiresAt and readyAt, and when failed an error message. Use the assetId from a ready upload when creating posts. Start uploads with ordinal_upload_create.
Inputs
upload_idstringrequired- ID of the upload job (UUID).
ordinal_users_listList the users who are members of the workspace.Read-onlyList Workspace Users
List the users who are members of the workspace. Returns each user's id, email, firstName and lastName. Use this to find user ids for approvals, subscribers and @mentions in comments.
Inputs
This tool takes no inputs.
ordinal_workspace_getGet the Ordinal workspace that the connected API key belongs to.Read-onlyGet Workspace
Get the Ordinal workspace that the connected API key belongs to. Returns the workspace id, name, slug, timezone and createdAt. Use this first to confirm the API key works and to read the workspace timezone before scheduling posts.
Inputs
This tool takes no inputs.
ordinal_x_followers_analytics_listGet daily follower counts for an X (Twitter) profile over a date range.Read-onlyList X Follower Growth
Get daily follower counts for an X (Twitter) profile over a date range. Returns an array of data points with followerCount and recordedAt. Use ordinal_x_posts_analytics_list for post performance.
Inputs
profile_idstringrequired- ID of the X (Twitter) profile (UUID).
end_datestring- End of the reporting window as YYYY-MM-DD. Defaults to today.
start_datestring- Start of the reporting window as YYYY-MM-DD. Defaults to 30 days ago.
ordinal_x_posts_analytics_listGet post-level performance metrics for an X (Twitter) profile over a date range.Read-onlyList X Post Analytics
Get post-level performance metrics for an X (Twitter) profile over a date range. Returns an array of posts with id, url, text, publishedAt, likeCount, replyCount, retweetCount, quoteCount, bookmarkCount, impressionCount, engagement rate, earned media value and the linked Ordinal post when present. Use ordinal_scheduling_profiles_list to find the profile id. Use ordinal_x_followers_analytics_list for follower growth.
Inputs
profile_idstringrequired- ID of the X (Twitter) profile (UUID).
end_datestring- End of the reporting window as YYYY-MM-DD. Defaults to today.
start_datestring- Start of the reporting window as YYYY-MM-DD. Defaults to 30 days ago.
ordinal_approvals_createRequest approval on a post from one or more workspace users.WriteCreate Approval Requests
Request approval on a post from one or more workspace users. Returns createdApprovals (new approvals with id, status, isBlocking, message, dueDate, user, requestedBy) and existingApprovals that were already in place. Get user ids from ordinal_users_list. A blocking approval stops the post from publishing until it is granted.
Inputs
approvalsarrayrequired- List of approval requests. Each object needs userId (the approver's UUID) and may include message, dueDate (ISO 8601 date-time) and isBlocking (boolean, default false). Example: [{"userId": "550e8400-e29b-41d4-a716-446655440011", "message": "Please review", "isBlocking": true}]
post_idstringrequired- ID of the post to request approval on (UUID).
ordinal_cpm_updateUpdate the workspace's per-platform CPM values used for earned media value.WriteUpdate CPM Values
Update the workspace's per-platform CPM values used for earned media value. Returns the updated linkedIn, x, instagram, facebook and threads CPM numbers. Send only the platforms to change. Use ordinal_cpm_get to read the current values.
- Idempotent
Inputs
facebooknumber- New CPM value for Facebook, zero or greater.
instagramnumber- New CPM value for Instagram, zero or greater.
linkedinnumber- New CPM value for LinkedIn, zero or greater.
threadsnumber- New CPM value for Threads, zero or greater.
xnumber- New CPM value for X, zero or greater.
ordinal_engagement_updateUpdate a planned engagement's text, delay, profile or LinkedIn reaction type.WriteUpdate Engagement
Update a planned engagement's text, delay, profile or LinkedIn reaction type. Returns the updated engagement with id, type, profileId, copy, delaySeconds and reactionType. Text and delay cannot be changed on Like engagements. Use ordinal_post_engagements_list to find the engagement id.
- Idempotent
Inputs
engagement_idstringrequired- ID of the engagement to update (UUID).
copystring- New text for a Comment or Repost engagement. Cannot be set on a Like.
delay_secondsinteger- Seconds to wait after the post publishes before engaging (0-86400). Cannot be set on a Like.
profile_idstring- UUID of a different profile to perform the engagement. It needs the required engagement permissions.
reaction_typestring- LinkedIn reaction for a Like engagement: Like, Celebrate, Love, Insightful, Support or Funny.one of
LikeCelebrateLoveInsightfulSupportFunny
ordinal_idea_add_to_calendarConvert a backlog idea into a calendar post on a given date.WriteAdd Idea to Calendar
Convert a backlog idea into a calendar post on a given date. Returns the id of the resulting post, which is the same as the idea id. Use ordinal_post_get with that id afterwards to read the post and ordinal_post_schedule to set a publish time.
Inputs
idea_idstringrequired- ID of the idea (UUID).
publish_datestringrequired- Calendar date to place the post on, as YYYY-MM-DD or an ISO 8601 date-time.
ordinal_idea_archiveArchive an idea so it no longer shows in the backlog.WriteArchive Idea
Archive an idea so it no longer shows in the backlog. It can be restored. Returns the idea id, workspaceId and archivedAt timestamp. Use ordinal_idea_unarchive to restore it.
Inputs
idea_idstringrequired- ID of the idea (UUID).
ordinal_idea_createCreate an idea in the content backlog, optionally with draft content for LinkedIn, X, TikTok or YouTube Shorts.WriteCreate Idea
Create an idea in the content backlog, optionally with draft content for LinkedIn, X, TikTok or YouTube Shorts. Returns the new idea with its id, url, title, channels and stored content. Use this to capture content before it is scheduled; use ordinal_idea_add_to_calendar to turn it into a post. Use ordinal_post_create to create a dated post directly.
Inputs
titlestringrequired- Title of the idea.
campaign_idstring- UUID of the campaign to link the idea to.
label_idsarray- List of label UUIDs to attach to the idea. On update this replaces the existing labels.
linkedinobject- LinkedIn content for the post, as an object. Fields: profileId (LinkedIn profile UUID, from ordinal_scheduling_profiles_list), copy (post text; mention people as @[Display Name](urn)), optional documentTitle, assets (list of objects with an assetId from the Uploads tools, up to 20 images, one video or one PDF), optional poll and linkPreview. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440001", "copy": "Excited to announce our launch!"}
tiktokobject- TikTok content for the post, as an object. Required: profileId, copy (caption, up to 2,200 characters) and assets (exactly one video, as an object with assetId). Optional: privacyLevel (PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS or SELF_ONLY), isCommentDisabled, isDuetDisabled, isStitchDisabled, isPromotingBusiness, isPaidPartnership and videoCoverTimestampMs. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440005", "copy": "Behind the scenes", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440014"}], "privacyLevel": "PUBLIC_TO_EVERYONE"}
xobject- X (Twitter) content for the post, as an object. Fields: profileId (X profile UUID, required) and tweets (required, at least one object with copy and optional assets of up to 4 assetId references; add several tweets in order to make a thread). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440003", "tweets": [{"copy": "Big news today."}, {"copy": "More details below."}]}
youtube_shortsobject- YouTube Shorts content for the post, as an object. Required: profileId, title (up to 100 characters) and assets (exactly one video of 1 second to 3 minutes, as an object with assetId). Optional: description (up to 5,000 characters), privacyStatus (public, private or unlisted), categoryId, notifySubscribers, isEmbeddable and isSelfDeclaredMadeForKids. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440006", "title": "Quick tip", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440015"}], "privacyStatus": "public"}
ordinal_idea_unarchiveRestore an archived idea to the backlog.WriteUnarchive Idea
Restore an archived idea to the backlog. Returns the idea id, workspaceId and archivedAt, which is null. Use ordinal_idea_archive to archive an idea.
Inputs
idea_idstringrequired- ID of the idea (UUID).
ordinal_idea_updateUpdate an idea's title, labels, campaign or per-channel content.WriteUpdate Idea
Update an idea's title, labels, campaign or per-channel content. Returns the updated idea with its id, url, title, channels and content. Send only the fields to change. Use ordinal_idea_get to read the current content first.
- Idempotent
Inputs
idea_idstringrequired- ID of the idea (UUID).
campaign_idstring- UUID of the campaign to link the idea to.
label_idsarray- List of label UUIDs to attach to the idea. On update this replaces the existing labels.
linkedinobject- LinkedIn content for the post, as an object. Fields: profileId (LinkedIn profile UUID, from ordinal_scheduling_profiles_list), copy (post text; mention people as @[Display Name](urn)), optional documentTitle, assets (list of objects with an assetId from the Uploads tools, up to 20 images, one video or one PDF), optional poll and linkPreview. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440001", "copy": "Excited to announce our launch!"}
tiktokobject- TikTok content for the post, as an object. Required: profileId, copy (caption, up to 2,200 characters) and assets (exactly one video, as an object with assetId). Optional: privacyLevel (PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS or SELF_ONLY), isCommentDisabled, isDuetDisabled, isStitchDisabled, isPromotingBusiness, isPaidPartnership and videoCoverTimestampMs. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440005", "copy": "Behind the scenes", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440014"}], "privacyLevel": "PUBLIC_TO_EVERYONE"}
titlestring- New title of the idea (at least one character).
xobject- X (Twitter) content for the post, as an object. Fields: profileId (X profile UUID, required) and tweets (required, at least one object with copy and optional assets of up to 4 assetId references; add several tweets in order to make a thread). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440003", "tweets": [{"copy": "Big news today."}, {"copy": "More details below."}]}
youtube_shortsobject- YouTube Shorts content for the post, as an object. Required: profileId, title (up to 100 characters) and assets (exactly one video of 1 second to 3 minutes, as an object with assetId). Optional: description (up to 5,000 characters), privacyStatus (public, private or unlisted), categoryId, notifySubscribers, isEmbeddable and isSelfDeclaredMadeForKids. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440006", "title": "Quick tip", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440015"}], "privacyStatus": "public"}
ordinal_label_createCreate a label in the workspace for organizing posts and ideas.WriteCreate Label
Create a label in the workspace for organizing posts and ideas. Returns the new label's id, name, color (hex), backgroundColor (hex), createdAt and updatedAt. Fails with a conflict if a label with that name already exists. Use ordinal_labels_list first to check whether the label already exists.
Inputs
colorstringrequired- Label color. One of yellow, purple, orange, red, brown, green.one of
yellowpurpleorangeredbrowngreen namestringrequired- Label name, at least one character. Must be unique in the workspace.
ordinal_post_archiveArchive a post, which moves it to the trash.WriteArchive Post
Archive a post, which moves it to the trash. The post can be restored. Returns the post id, workspaceId and archivedAt timestamp. Use ordinal_post_unarchive to restore it.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_comment_createAdd a comment to a post as the API key's user.WriteCreate Post Comment
Add a comment to a post as the API key's user. Returns the new comment with id, message, postId, createdAt, updatedAt and user. Mention a teammate with @[Display Name](userId), using ids from ordinal_users_list. Use ordinal_post_comments_list to read existing comments.
Inputs
messagestringrequired- Comment text, at least one character. Mention users as @[Display Name](userId).
post_idstringrequired- ID of the post (UUID).
ordinal_post_createCreate a post in the workspace for one or more channels (LinkedIn, X, Instagram, TikTok, YouTube Shorts).WriteCreate Post
Create a post in the workspace for one or more channels (LinkedIn, X, Instagram, TikTok, YouTube Shorts). Returns the new post's id, url, title, channels, status, createdAt, updatedAt and the stored per-channel content with assets. Use this to draft or schedule new content; at least one channel object is required. Upload media first with ordinal_upload_create and pass the resulting assetId. Use ordinal_post_update to edit an existing post.
Inputs
publish_atstringrequired- When the post is scheduled to publish, as an ISO 8601 date-time in UTC.
statusstringrequired- Workflow status of the post: Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled or Posted.one of
TentativeToDoInProgressForReviewBlockedFinalizedScheduledPosted titlestringrequired- Internal title of the post, shown in the Ordinal calendar.
campaign_idstring- UUID of the campaign to link the post to.
instagramobject- Instagram content for the post, as an object. The type field is required and must be Feed, Reel or Story. Common fields: profileId, copy (caption, up to 2,200 characters), assets (list of objects with assetId and, for Feed, optional user tags). Reels also take coverPhotoId, shareToFeed, trialReelGraduationStrategy; Feed and Reels take collaborators (up to 3 usernames) and location (pageId and name from ordinal_instagram_locations_search). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440004", "type": "Feed", "copy": "New drop!", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440012"}]}
label_idsarray- List of label UUIDs to attach to the post. On update this replaces the existing labels.
linkedinobject- LinkedIn content for the post, as an object. Fields: profileId (LinkedIn profile UUID, from ordinal_scheduling_profiles_list), copy (post text; mention people as @[Display Name](urn)), optional documentTitle, assets (list of objects with an assetId from the Uploads tools, up to 20 images, one video or one PDF), optional poll and linkPreview. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440001", "copy": "Excited to announce our launch!"}
notesstring- Internal notes for the team. Not published.
tiktokobject- TikTok content for the post, as an object. Required: profileId, copy (caption, up to 2,200 characters) and assets (exactly one video, as an object with assetId). Optional: privacyLevel (PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS or SELF_ONLY), isCommentDisabled, isDuetDisabled, isStitchDisabled, isPromotingBusiness, isPaidPartnership and videoCoverTimestampMs. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440005", "copy": "Behind the scenes", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440014"}], "privacyLevel": "PUBLIC_TO_EVERYONE"}
xobject- X (Twitter) content for the post, as an object. Fields: profileId (X profile UUID, required) and tweets (required, at least one object with copy and optional assets of up to 4 assetId references; add several tweets in order to make a thread). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440003", "tweets": [{"copy": "Big news today."}, {"copy": "More details below."}]}
youtube_shortsobject- YouTube Shorts content for the post, as an object. Required: profileId, title (up to 100 characters) and assets (exactly one video of 1 second to 3 minutes, as an object with assetId). Optional: description (up to 5,000 characters), privacyStatus (public, private or unlisted), categoryId, notifySubscribers, isEmbeddable and isSelfDeclaredMadeForKids. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440006", "title": "Quick tip", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440015"}], "privacyStatus": "public"}
ordinal_post_engagements_createPlan team engagements (likes, comments or reposts) that fire automatically after a post publishes.WriteCreate Post Engagements
Plan team engagements (likes, comments or reposts) that fire automatically after a post publishes. Returns the created engagements with id, channel, type, profileId, copy, delaySeconds and reactionType. Use ordinal_engagement_profiles_list or ordinal_scheduling_profiles_list for profile ids. Use ordinal_engagement_update to change one later.
Inputs
channelstringrequired- Channel the engagements are for: LinkedIn or Twitter.one of
LinkedInTwitter engagementsarrayrequired- List of engagements to create (at least one). Each object needs type (Like, Comment or Repost) and profileId (the profile that engages). Comment needs copy and delaySeconds (0-86400); Repost needs delaySeconds and may have copy; Like takes neither, and may set reactionType on LinkedIn (Like, Celebrate, Love, Insightful, Support or Funny). Example: [{"type": "Comment", "profileId": "550e8400-e29b-41d4-a716-446655440002", "copy": "Great post!", "delaySeconds": 600}]
post_idstringrequired- ID of the post (UUID).
ordinal_post_scheduleSchedule a post for publishing, or move an already scheduled post to a new time.WriteSchedule Post
Schedule a post for publishing, or move an already scheduled post to a new time. Returns the post's id, url, title, channels, status, publishDate, publishAt and updatedAt. Use this to set or change the publish time. Use ordinal_post_unschedule to take a post off the schedule.
Inputs
post_idstringrequired- ID of the post (UUID).
publish_atstringrequired- When to publish the post, as an ISO 8601 date-time in UTC. To keep the existing time when rescheduling, pass the post's current publishAt.
ordinal_post_unarchiveRestore an archived post from the trash.WriteUnarchive Post
Restore an archived post from the trash. Returns the post id, workspaceId and archivedAt, which is always null. Use ordinal_post_archive to archive a post.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_unscheduleRemove a post from the publishing schedule without deleting it.WriteUnschedule Post
Remove a post from the publishing schedule without deleting it. Returns the post's id, url, title, channels, status, publishDate, publishAt and updatedAt; publishDate and publishAt may be null. Use ordinal_post_schedule to schedule it again. Use ordinal_post_archive to remove the post from the calendar.
Inputs
post_idstringrequired- ID of the post (UUID).
ordinal_post_updateUpdate an existing post's title, publish time, status, labels, notes or per-channel content.WriteUpdate Post
Update an existing post's title, publish time, status, labels, notes or per-channel content. Returns the updated post with its id, url, title, channels, status and per-channel content. Use this to edit a post. Send only the fields you want to change. Use ordinal_post_schedule or ordinal_post_unschedule to change scheduling alone.
- Idempotent
Inputs
post_idstringrequired- ID of the post (UUID).
campaign_idstring- UUID of the campaign to link the post to.
instagramobject- Instagram content for the post, as an object. The type field is required and must be Feed, Reel or Story. Common fields: profileId, copy (caption, up to 2,200 characters), assets (list of objects with assetId and, for Feed, optional user tags). Reels also take coverPhotoId, shareToFeed, trialReelGraduationStrategy; Feed and Reels take collaborators (up to 3 usernames) and location (pageId and name from ordinal_instagram_locations_search). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440004", "type": "Feed", "copy": "New drop!", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440012"}]}
label_idsarray- List of label UUIDs to attach to the post. On update this replaces the existing labels.
linkedinobject- LinkedIn content for the post, as an object. Fields: profileId (LinkedIn profile UUID, from ordinal_scheduling_profiles_list), copy (post text; mention people as @[Display Name](urn)), optional documentTitle, assets (list of objects with an assetId from the Uploads tools, up to 20 images, one video or one PDF), optional poll and linkPreview. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440001", "copy": "Excited to announce our launch!"}
notesstring- New internal notes for the team.
publish_atstring- New publish time as an ISO 8601 date-time in UTC.
statusstring- Workflow status of the post: Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled or Posted.one of
TentativeToDoInProgressForReviewBlockedFinalizedScheduledPosted tiktokobject- TikTok content for the post, as an object. Required: profileId, copy (caption, up to 2,200 characters) and assets (exactly one video, as an object with assetId). Optional: privacyLevel (PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS or SELF_ONLY), isCommentDisabled, isDuetDisabled, isStitchDisabled, isPromotingBusiness, isPaidPartnership and videoCoverTimestampMs. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440005", "copy": "Behind the scenes", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440014"}], "privacyLevel": "PUBLIC_TO_EVERYONE"}
titlestring- New internal title of the post.
xobject- X (Twitter) content for the post, as an object. Fields: profileId (X profile UUID, required) and tweets (required, at least one object with copy and optional assets of up to 4 assetId references; add several tweets in order to make a thread). Example: {"profileId": "550e8400-e29b-41d4-a716-446655440003", "tweets": [{"copy": "Big news today."}, {"copy": "More details below."}]}
youtube_shortsobject- YouTube Shorts content for the post, as an object. Required: profileId, title (up to 100 characters) and assets (exactly one video of 1 second to 3 minutes, as an object with assetId). Optional: description (up to 5,000 characters), privacyStatus (public, private or unlisted), categoryId, notifySubscribers, isEmbeddable and isSelfDeclaredMadeForKids. Example: {"profileId": "550e8400-e29b-41d4-a716-446655440006", "title": "Quick tip", "assets": [{"assetId": "550e8400-e29b-41d4-a716-446655440015"}], "privacyStatus": "public"}
ordinal_slack_boost_createAttach a Slack boost to a post so a Slack channel is notified when the post publishes.WriteCreate Slack Boost
Attach a Slack boost to a post so a Slack channel is notified when the post publishes. Returns the new slackBoost with id, copy, isAutoCreated, postId, slackWebhook, createdAt and updatedAt. Use ordinal_slack_webhooks_list to find the channel to notify.
Inputs
post_idstringrequired- ID of the post to attach the boost to (UUID).
slack_webhook_idstringrequired- ID of the Slack webhook (channel) to notify (UUID).
copystring- Optional custom message included in the Slack notification.
ordinal_slack_boost_updateChange a Slack boost's custom message or target Slack channel.WriteUpdate Slack Boost
Change a Slack boost's custom message or target Slack channel. Returns the updated slackBoost with id, copy, isAutoCreated, postId, slackWebhook and updatedAt. Send only the fields to change.
- Idempotent
Inputs
boost_idstringrequired- ID of the Slack boost to update (UUID).
copystring- New custom message for the Slack notification.
slack_webhook_idstring- ID of a different Slack webhook (channel) to notify (UUID).
ordinal_subscribers_createSubscribe workspace users to notifications for a post.WriteAdd Post Subscribers
Subscribe workspace users to notifications for a post. Returns createdSubscribers (new subscriptions) and existingSubscribers that were already subscribed. Get user ids from ordinal_users_list.
Inputs
post_idstringrequired- ID of the post to subscribe users to (UUID).
user_idsarrayrequired- List of workspace user UUIDs to subscribe.
ordinal_upload_createStart an asynchronous upload of an image, video, GIF or PDF from a public URL into Ordinal.WriteUpload File From URL
Start an asynchronous upload of an image, video, GIF or PDF from a public URL into Ordinal. Returns the upload job id, a pending status and createdAt. Poll ordinal_upload_get until the status is ready, then pass its assetId in the assets of ordinal_post_create or ordinal_post_update.
Inputs
urlstringrequired- Publicly accessible URL of the file to upload. URLs behind authentication will fail. Supported: JPEG, PNG, GIF, WebP, MP4, MOV and PDF (LinkedIn only).
ordinal_approval_deleteDelete an approval request by id.DestructiveDelete Approval
Delete an approval request by id. Returns deletedApproval with its id, status, isBlocking, message, dueDate, approvedAt, user and requestedBy. Use ordinal_post_approvals_list to find the approval id.
- Idempotent
Inputs
approval_idstringrequired- ID of the approval to delete (UUID).
ordinal_comment_deleteDelete a post comment by id.DestructiveDelete Comment
Delete a post comment by id. Returns the deleted comment's id, message, postId, createdAt, updatedAt and user. Use ordinal_post_comments_list to find the comment id.
- Idempotent
Inputs
comment_idstringrequired- ID of the comment to delete (UUID).
ordinal_engagement_deleteDelete a planned engagement by id.DestructiveDelete Engagement
Delete a planned engagement by id. Returns success as a boolean. Use ordinal_post_engagements_list to find the engagement id.
- Idempotent
Inputs
engagement_idstringrequired- ID of the engagement to delete (UUID).
ordinal_label_deleteDelete a label from the workspace.DestructiveDelete Label
Delete a label from the workspace. Returns the deleted label's id, name, color, backgroundColor, createdAt and updatedAt. Use ordinal_labels_list to find the label id. This permanently removes the label from every post and idea that uses it.
- Idempotent
Inputs
label_idstringrequired- ID of the label to delete (UUID).
ordinal_slack_boost_deleteDelete a Slack boost from a post.DestructiveDelete Slack Boost
Delete a Slack boost from a post. Returns success as a boolean. Use ordinal_post_slack_boosts_list to find the boost id.
- Idempotent
Inputs
boost_idstringrequired- ID of the Slack boost to delete (UUID).
ordinal_subscriber_deleteRemove a subscriber from a post by subscription id.DestructiveDelete Subscriber
Remove a subscriber from a post by subscription id. Returns deletedSubscriber with its id, user, createdBy and createdAt. Use ordinal_post_subscribers_list to find the subscription id (not the user id).
- Idempotent
Inputs
subscriber_idstringrequired- ID of the subscriber record to remove (UUID).
No tools match.