Typefully integrationTypefully logo

Typefully integration for AI agents.

Typefully integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Typefully tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Typefully actions, managed and audited.

Your user connects Typefully once; your agent can then use the Typefully v2 API to manage social sets, drafts, media uploads, tags, queue schedules, analytics, comments, and webhooks — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Typefully access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Typefully tools.

25 tools are generated from the published Typefully catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 25 tools. All published catalog entries are included in this page's server-rendered HTML.

Get followers analytics
Retrieve daily follower counts for a platform in a social set between `start_date` and `end_date` (inclusive). **Required permission:** READ access to this social set. Notes: - `platform` is a path parameter (for example: `x`, `linkedin`). - This endpoint is social-set scoped and platform-scoped to support analytics expansion. - Currently, only `x` is supported. - Returns a totals-only daily follower series with the latest in-range follower count. - If `start_date` and `end_date` are omitted, defaults to the last 30 days. - Date ranges larger than 366 days are rejected.
Analytics
List analytics posts
Retrieve posts with metrics for a platform in a social set between `start_date` and `end_date` (inclusive). **Required permission:** READ access to this social set. Notes: - `platform` is a path parameter (for example: `x`, `linkedin`). - This endpoint is social-set scoped and platform-scoped to support analytics expansion. - Currently, only `x` is supported. - Replies are excluded by default. Set `include_replies=true` to include them. - Pagination defaults to `limit=25` with max `limit=100`. - Date ranges larger than 366 days are rejected.
Analytics
Add a comment to an existing comment thread
Append a comment to an existing comment thread. Returns the full updated thread. **Required permission:** WRITE access to this social set.
Comments
Create a comment thread
Create a new comment thread on a draft. A comment thread is the anchored discussion container; comments are the messages inside the thread. For post platforms (`x`, `linkedin`, `mastodon`, `threads`, `bluesky`), provide `post_index` and anchor to a substring of that post's visible text using `selected_text`. Use `occurrence` to disambiguate when the same substring appears more than once; omit it to anchor on the first match. For X Articles, send `platform: "x_article"` and omit `post_index` (or use 0). `selected_text` matches rendered article text in document order; Markdown syntax, media tags, and X post embed tags are ignored. X Article text comments cannot overlap existing stored X Article anchors; overlapping selections return `400 VALIDATION_ERROR`. LinkedIn mentions appear in `posts[*].text` as `@[Name](urn:li:organization:ID)` or `@[Name](urn:li:person:ID)`. A mention is indivisible — `selected_text` must either contain the entire mention substring or stay outside it. **Required permission:** WRITE access to this social set.
Comments
Delete a comment
Deletes a comment from a comment thread. If `comment_id` identifies the *root* (oldest) comment, the entire thread is deleted and the corresponding comment markers are removed from the text. **Required permission:** Authorship of the comment or WRITE access on the social set.
Comments
Delete a comment thread
Deletes the comment thread along with all its comments and removes the corresponding comment markers from the text. **Required permission:** Authorship of the comment thread or WRITE access on the social set.
Comments
List comment threads on a draft
Retrieve comment threads attached to a draft, ordered by creation time. Each thread includes the original `selected_text` snapshot and the full ordered list of comments. By default this endpoint returns only unresolved threads (`status=unresolved`). Use `status=resolved` to list resolved threads or `status=all` to list both unresolved and resolved threads. Example: `GET /v2/social-sets/4/drafts/12/comment-threads?status=all&limit=50`. **Required permission:** READ access to this social set.
Comments
Resolve a comment thread
Resolves the comment thread and removes the corresponding comment markers from the text. **Required permission:** Either authorship of the comment thread or WRITE access on the social set.
Comments
Update a comment's text
Update the plain-text body of a single comment. Returns the full updated thread. **Required permission:** Authorship of the comment.
Comments
Create draft
Create a new draft with content for one or more social media platforms. The draft can be saved as a draft, scheduled for later publishing, or published immediately. **Account-level settings:** This endpoint automatically applies the following account-level settings if enabled: Auto-Retweet, Auto-Plug, and Natural Posting Time. **Required permission:** WRITE access to create drafts. PUBLISH access is required to schedule or publish immediately.
Drafts
Delete draft
Delete a draft. Requires WRITE access. You can delete your own drafts in any status (DRAFT, ERROR, SCHEDULED, PUBLISHED, PUBLISHING) with WRITE access. Drafts created by other users also require WRITE access to delete. **Required permission:** WRITE access to this social set.
Drafts
Update draft
Update an existing draft with partial update semantics. Only provided fields are updated; omitted fields remain unchanged. Scheduled drafts require publish access to edit. ## Note about Comment-thread markers If the draft has comment threads, submitted `posts[*].text` and X Article `platforms.x_article.content_markdown` must preserve the Typefully comment-thread markers received from `GET /drafts/{id}`. Validation is platform-level: every comment thread anchored on a platform must appear somewhere in that platform's submitted text. Recommended edit flow: GET the draft without `exclude_comment_markers`, modify text while preserving markers exactly, then PATCH with `force_overwrite_comments: false` (the default). - `409 COMMENTS_MARKER_MISMATCH` will be thrown if an expected comment thread marker is missing unless `"force_overwrite_comments": true` is set, in which case the affected threads are resolved server-side. - `400 COMMENTS_MARKER_UNKNOWN_ID` will be thrown if you submit an id that doesn't exist on this draft. - `400 COMMENTS_MARKER_MALFORMED` will be thrown if the marker tag is malformed (bad UUID, unbalanced, attribute violations, etc.). Pass `?exclude_comment_markers=true` to render the response text without markers (read-only / display rendering — does NOT skip server-side marker validation on the request body). Do not PATCH content returned with that flag unless you intend to resolve or remove comment anchors. **Required permission:** WRITE access to edit drafts. PUBLISH access is required to edit scheduled drafts, schedule, or publish.
Drafts
Get draft
Retrieve a specific draft by ID, including its content for all configured platforms, status, and scheduling information. If the draft has comment threads, the response includes Typefully comment-thread markers in `posts[*].text` and, for X Articles, in `platforms.x_article.content_markdown`. These markers are structural anchor metadata for `GET → modify → PATCH` round-trips; preserve them exactly when editing. For read-only display/export, pass `?exclude_comment_markers=true` to render draft text without markers. Content returned with that flag set should not be PATCHed back unless you intend to resolve or remove comment anchors. **Required permission:** READ access to this social set.
Drafts
List drafts
Retrieve all drafts for a specific social set with optional filtering and sorting. Drafts are ordered by last edited date (most recent first) by default. **Required permission:** READ access to this social set.
Drafts
Resolve LinkedIn organization from URL
Resolve a LinkedIn company/school URL into organization metadata that can be used to build LinkedIn mention syntax in post text. This endpoint is resolver-only and is not a general organization search endpoint. Mention format: `@[Company Name](urn:li:organization:123456)` **Required permission:** READ access to the social set.
Social Sets
Create media upload
Generate a presigned S3 upload URL for images, videos, GIFs, or PDFs. After you receive the URL, upload the file contents with a PUT request and then reference the returned media_id when creating drafts. **Uploading:** Send a plain PUT with only raw file bytes as the body — no extra headers (`Content-Type`, `Authorization`, etc.). The presigned URL signature was calculated without them, so adding headers causes a `403 SignatureDoesNotMatch`. Use `curl -T <file>` (not `--data-binary`), `requests.put(url, data=file_bytes)` in Python, or `fetch(url, {method:'PUT', body:buffer})` in JS. A successful upload returns `200` or `204`. **Required permission:** WRITE access to the social set.
Media
Get media status
Retrieves the processing status of an uploaded media file. Poll this endpoint after uploading to check when the file is ready to use in drafts. **Required permission:** READ access to the social set.
Media
Get queue
Retrieve queue slots and scheduled drafts between `start_date` and `end_date` (inclusive). **Required permission:** READ access to this social set. Notes: - `start_date` and `end_date` are interpreted in the social set timezone. - Ranges larger than 62 days are rejected.
Queue
Get queue schedule
Retrieve the queue schedule rules for a social set. **Required permission:** READ access to this social set. Behavior: - If the schedule row does not exist yet, it is created with defaults.
Queue
Replace queue schedule
Replace the queue schedule rules for a social set. **Required permission:** ADMIN access to this social set. Semantics: full replacement (atomic). Rule validation: - `h` in `0..23`, `m` in `0..59` - `days` values are one of: `mon,tue,wed,thu,fri,sat,sun` - Duplicate day+time combinations are rejected Note: `rules=[]` is allowed and represents an empty schedule.
Queue
Get social set details
Retrieve detailed information about a social set, including every configured social media platform (X, LinkedIn, Mastodon, Threads, Bluesky) with account details and profile information. **Required permission:** READ access to the social set.
Social Sets
List social sets
Retrieve all social sets (accounts) you can access. This includes accounts you own directly and accounts that belong to teams you are a member of.
Social Sets
Create tag
Create a new tag for a social set. The slug is automatically generated from the tag name, which must be unique per social set. **Required permission:** WRITE access to the social set.
Tags
List tags
Retrieve all tags for a social set, ordered by their slugs. **Required permission:** READ access to the social set.
Tags
Get current user
Retrieve the currently authenticated Typefully user associated with your API Key
Users
FAQ

Typefully integration, answered

How do AI agents use Typefully through Open Connector?
Your user connects Typefully once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Typefully tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Typefully MCP server?
Yes. Open Connector can serve Typefully as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Typefully actions with credentials injected server-side.
Where do Typefully credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Typefully — keep the keys.

Open source, self-hostable, with Typefully credentials that never leave your infrastructure. Run it from source today.