The Typefully connector lets your AI agent act in each user's Typefully account. Each user connects their own Typefully access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 18 tools.
- Tools
- 18
- What they doRead · write · destructive
- 10 · 7 · 110 read7 write1 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 Typefully connection
In AgentKit > Connections, create a Typefully 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 = 'typefully'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Typefully:', 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: 'typefully_get_me',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 = "typefully"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Typefully:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="typefully_get_me",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Typefully credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooltypefully_get_draftGet one draft with its full content.Read-onlyGet Draft
Get one draft with its full content. Returns the draft's status, publish_state, title, tags, scheduled date, share and private URLs, the per-platform posts and any published post URLs. Use it to read a draft before editing it, or to poll publish_state after publishing with publish_at set to now. Use list_drafts to find draft ids.
Inputs
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_get_meGet the Typefully user that owns the API key.Read-onlyGet Current User
Get the Typefully user that owns the API key. Returns the user id, name, email, profile image URL, signup date and the label of the API key. Use it to confirm the credential works. Use list_social_sets to find the accounts this user can post to.
Inputs
This tool takes no inputs.
typefully_get_queueGet the publishing queue of a social set for a date range, with the scheduled drafts and open slots for each day.Read-onlyGet Queue
Get the publishing queue of a social set for a date range, with the scheduled drafts and open slots for each day. Returns start_date, end_date and a days list describing each day's slots and scheduled drafts. Use it to see what is scheduled and which slots are free. Use list_drafts with status scheduled for a flat list of drafts.
Inputs
end_datestringrequired- Last day of the range as a date in YYYY-MM-DD format.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
start_datestringrequired- First day of the range as a date in YYYY-MM-DD format.
typefully_get_queue_scheduleGet the recurring posting schedule of a social set's queue.Read-onlyGet Queue Schedule
Get the recurring posting schedule of a social set's queue. Returns the social set id, its timezone and the list of rules, each with hour, minute and days of the week. Use it to see when next-free-slot publishing lands. Use update_queue_schedule to change it.
Inputs
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_list_comment_threadsList the comment threads on a draft.Read-onlyList Comment Threads
List the comment threads on a draft. Returns a page of threads with id, platform, status, the selected text each is anchored to and its comments, plus paging fields. Use it to read review feedback on a draft. Use create_comment_thread to start a new thread.
Inputs
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
limitinteger- Maximum number of items to return per page, from 1 to 50. The API default is 10.
offsetinteger- Number of items to skip before returning results, for paging through long lists. The API default is 0.
platformstring- Only return threads on this platform's posts. Leave empty for all platforms.one of
xlinkedinmastodonthreadsblueskysubstackx_article statusstring- Which threads to return: unresolved, resolved or all. The API default is unresolved, so resolved threads are left out unless you ask for them.one of
unresolvedresolvedall
typefully_list_draftsList drafts in a social set, optionally filtered by status or tag.Read-onlyList Drafts
List drafts in a social set, optionally filtered by status or tag. Returns a page of drafts with id, status, preview text, scheduled date, tags, private URL and per-platform published timestamps, plus paging fields. Use it to browse or find drafts. Use get_draft for the full content of one draft.
Inputs
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
limitinteger- Maximum number of items to return per page, from 1 to 50. The API default is 10.
offsetinteger- Number of items to skip before returning results, for paging through long lists. The API default is 0.
order_bystring- Field to sort by. Prefix with a minus sign for descending order. The API default is -updated_at (most recently edited first).one of
created_at-created_atupdated_at-updated_atscheduled_date-scheduled_datepublished_at-published_at statusstring- Only return drafts with this status. 'draft' is saved but unscheduled, 'scheduled' will auto-publish at its scheduled date, 'planned' has a date but will not publish until confirmed, 'publishing' is in flight, 'published' was posted and 'error' failed to publish. Leave empty for all statuses.one of
draftpublishedscheduledplannederrorpublishing tagstring- Only return drafts that have this tag. Use the tag slug (not its display name) from typefully_list_tags, for example product-launch.
typefully_resolve_linkedin_organizationLook up a LinkedIn company page from its URL so you can mention it in a LinkedIn post.Read-onlyResolve LinkedIn Organization
Look up a LinkedIn company page from its URL so you can mention it in a LinkedIn post. Returns the organization id, URN, mention_text, name, vanity name, description, website, logo URL and URL. Use it before writing a LinkedIn post that tags a company. Paste the returned mention_text into the post text.
Inputs
organization_urlstringrequired- Full URL of the LinkedIn company page, for example https://www.linkedin.com/company/typefully.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_add_comment_to_threadReply on an existing comment thread of a draft.WriteAdd Comment to Thread
Reply on an existing comment thread of a draft. Returns the full thread with its id, platform, status, selected text and all comments including the new one. Use it to answer review feedback. Use create_comment_thread to start a thread on new text. Needs comment_thread_id from list_comment_threads.
Inputs
comment_thread_idstringrequired- UUID of the comment thread on the draft. Get it from typefully_list_comment_threads.
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
textstringrequired- Plain-text body of the reply, up to 10000 characters.
typefully_create_comment_threadStart a comment thread anchored to a piece of text in a draft post.WriteCreate Comment Thread
Start a comment thread anchored to a piece of text in a draft post. Returns the new thread with its id, platform, status, selected text and comments. Use it to leave review feedback on specific wording. Use add_comment_to_thread to reply on an existing thread. The selected text must match the post text exactly; read it with get_draft first.
Inputs
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
post_indexintegerrequired- Zero-based position of the target post within the platform's posts array, so 0 is the first post of a thread.
selected_textstringrequired- Exact piece of the post text the thread is anchored to. Copy it verbatim from the draft's post text, including punctuation.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
textstringrequired- Plain-text body of the first comment, up to 10000 characters.
occurrenceinteger- Zero-based occurrence of the selected text when the same text appears more than once in the post. The API default is 0, the first occurrence.
platformstring- Platform whose post you are commenting on. Required when the draft has more than one commentable platform; otherwise it is detected automatically.one of
xlinkedinmastodonthreadsblueskysubstack
typefully_create_draftCreate a draft, scheduled post or immediate post in a social set.WriteCreate Draft
Create a draft, scheduled post or immediate post in a social set. Returns the new draft with its id, status, publish_state, private URL, platform posts and scheduling fields. Use it to write posts for one or more platforms. Set publish_at to schedule or publish, or leave it empty to save a draft. Use update_draft to change an existing draft. Needs social_set_id from list_social_sets; any tags must already exist (see list_tags).
Inputs
platformsobjectrequired- Platform settings keyed by platform name: x, linkedin, mastodon, threads, bluesky or substack. Each platform you want to post to takes enabled set to true and a posts array, where every post has a text and may carry media_ids. Each array entry is one post, so several entries make a thread. Platform extras are optional: x posts accept reply_settings and quote_post_url, and x settings accept reply_to_url or community_id; linkedin settings accept first_comment. A platform set to enabled false needs no posts. Example: {"x": {"enabled": true, "posts": [{"text": "Launching today"}, {"text": "Details in the thread"}]}, "linkedin": {"enabled": true, "posts": [{"text": "Launching today"}]}}.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
draft_titlestring- Internal title for organising drafts in Typefully. It is never posted to social media. Up to 512 characters.
plan_atstring- Date to plan the draft for: next-free-slot or a future ISO 8601 datetime with a timezone offset. A planned draft appears on the queue and calendar but never publishes until you confirm it by setting publish_at. Cannot be combined with publish_at.
publish_atstring- When to publish: the word now to publish immediately, next-free-slot for the next queue slot, or a future ISO 8601 datetime with a timezone offset. Leave empty to keep the item a plain draft. Cannot be combined with plan_at. Publishing with now is asynchronous: the response shows publish_state in_progress, so poll typefully_get_draft until it is finished.
scratchpad_textstring- Plain-text notes attached to the draft for your own reference. Formatting is stripped and the text is never posted.
shareboolean- Set true to generate a public share URL that lets anyone with the link view the draft. The API default is false.
tagsarray- Tag slugs (not display names) to put on the draft, up to 10. Each tag must already exist in the social set; create missing ones with typefully_create_tag.
typefully_create_tagCreate a tag in a social set.WriteCreate Tag
Create a tag in a social set. Returns the new tag's slug, name and creation time. The slug is generated from the name. Use it before putting a new tag on a draft. Use list_tags to check what already exists.
Inputs
namestringrequired- Display name for the new tag, 1 to 32 characters. The slug is generated from it, for example Product Launch becomes product-launch.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_resolve_comment_threadMark a comment thread on a draft as resolved.WriteResolve Comment Thread
Mark a comment thread on a draft as resolved. Returns the thread with its id, platform, status, selected text and comments. Use it once feedback has been handled. Use list_comment_threads with status unresolved to find unresolved threads.
- Idempotent
Inputs
comment_thread_idstringrequired- UUID of the comment thread on the draft. Get it from typefully_list_comment_threads.
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_update_draftEdit an existing draft, including its posts, tags, title and schedule.WriteUpdate Draft
Edit an existing draft, including its posts, tags, title and schedule. Returns the updated draft with its status, publish_state, platform posts and scheduling fields. Use it to change content, schedule, confirm a planned draft or publish now. Only the fields you send change. Use create_draft for a new draft. Needs draft_id from list_drafts or get_draft.
Inputs
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
draft_titlestring- Internal title for organising drafts in Typefully. It is never posted to social media. Up to 512 characters.
force_overwrite_commentsboolean- Set true to accept new post text that drops the comment anchors of existing comment threads; those threads are then resolved automatically. The API default is false, which rejects such edits with a 409 error.
plan_atstring- Date to plan the draft for: next-free-slot or a future ISO 8601 datetime with a timezone offset. A planned draft appears on the queue and calendar but never publishes until you confirm it by setting publish_at. Cannot be combined with publish_at.
platformsobject- Platform settings to change, keyed by platform name: x, linkedin, mastodon, threads, bluesky or substack. Only the platforms you include are updated; the rest stay as they are. For an included platform, send enabled and the complete posts array, because the posts you send replace that platform's posts. Example: {"x": {"enabled": true, "posts": [{"text": "Updated text"}]}}.
publish_atstring- When to publish: the word now to publish immediately, next-free-slot for the next queue slot, or a future ISO 8601 datetime with a timezone offset. Leave empty to keep the item a plain draft. Cannot be combined with plan_at. Publishing with now is asynchronous: the response shows publish_state in_progress, so poll typefully_get_draft until it is finished.
scratchpad_textstring- Plain-text notes attached to the draft for your own reference. Formatting is stripped and the text is never posted.
shareboolean- Set true to generate a public share URL that lets anyone with the link view the draft. The API default is false.
tagsarray- Tag slugs (not display names) to put on the draft, up to 10. Each tag must already exist in the social set; create missing ones with typefully_create_tag. Sending a list replaces the draft's existing tags.
typefully_update_queue_scheduleReplace the whole recurring posting schedule of a social set's queue.WriteUpdate Queue Schedule
Replace the whole recurring posting schedule of a social set's queue. Returns the social set id, its timezone and the saved rules. Use it to change posting times. The rules you send replace every existing rule, so fetch them with get_queue_schedule first and send the full list back with your changes.
- Idempotent
Inputs
rulesarrayrequired- Complete list of schedule rules that replaces the current ones. Each rule has h (hour, 0 to 23), m (minute, 0 to 59) and days, a list of at least one of mon, tue, wed, thu, fri, sat, sun. Times are in the social set's timezone. Example: [{"h": 9, "m": 30, "days": ["mon", "wed", "fri"]}].
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
typefully_delete_draftDelete a draft permanently.DestructiveDelete Draft
Delete a draft permanently. Returns an empty success response when the draft is deleted. Use it only when the draft is no longer wanted. Use update_draft to unschedule or edit instead. Needs draft_id from list_drafts.
- Idempotent
Inputs
draft_idintegerrequired- Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_idintegerrequired- Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
No tools match.