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.
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
Your user grants Typefully access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
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
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.