Typefully MCP server for AI agents

Live

BEARER TOKEN

SOCIAL MEDIA

Marketing

Typefully gives your agent social media publishing: write drafts, schedule or publish them for your connected social sets, manage the posting queue and tags, and comment on drafts with your team.

  • Per-user credentials: each call uses the actual user's access token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Typefully
agent · Acme Q3
Run
What's in our queue for next week?
S
typefully_get_queue
88ms
Social media agent
4 posts are queued for next week. The API launch thread goes out first, on Monday at 10am.
Sources: 1 social set, 4 queued posts
typefully
4 posts
18:29
Message Claude...

Tools your social media agent reaches for on Typefully, scoped per user.

CALL ANY TOOL
18 tools for social media in Typefully: create, edit, and schedule drafts, manage queues and tags, and run comment threads on drafts.
typefully_add_comment_to_thread
Add 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.
Parameters
Name
Type
Required
Description
comment_thread_id
string
Required
UUID of the comment thread on the draft. Get it from typefully_list_comment_threads.
draft_id
integer
Required
Numeric ID of the draft. Get it from typefully_list_drafts or from the response of typefully_create_draft.
social_set_id
integer
Required
Numeric ID of the Typefully social set (connected account profile) to act on. Get it from typefully_list_social_sets.
text
string
Required
Plain-text body of the reply, up to 10000 characters.
typefully_create_comment_thread
Create comment thread
typefully_create_draft
Create draft
typefully_create_tag
Create tag
typefully_delete_draft
Delete draft
typefully_get_draft
Get draft
typefully_get_me
Get me
typefully_get_queue
Get queue
typefully_get_queue_schedule
Get queue schedule
typefully_get_social_set
Set get social
typefully_list_comment_threads
List comment threads
typefully_list_drafts
List drafts
typefully_list_social_sets
List social sets
typefully_list_tags
List tags
typefully_resolve_comment_thread
Resolve comment thread
typefully_resolve_linkedin_organization
Resolve linkedin organization
typefully_update_draft
Update draft
typefully_update_queue_schedule
Update queue schedule
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Typefully tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["typefully"], toolNames: [
    "typefully_list_social_sets",
    "typefully_create_draft",
    "typefully_get_queue"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Draft a thread announcing our new API and schedule it in next week's queue" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["typefully"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Draft a thread announcing our new API and schedule it in next week's queue" }],
  tools,
});

// Execute the tool call with the user's vaulted Typefully access token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["typefully"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Draft a thread announcing our new API and schedule it in next week's queue" }],
  tools,
});

// Tool call runs with the user's vaulted Typefully access token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["typefully"] }, pageSize: 100,
});

const agent = new Agent({
  name: "social_media_agent",
  model: "gemini-2.5-pro",
  instruction: "Typefully tools scoped to this user",
  tools,
});

await agent.run("Draft a thread announcing our new API and schedule it in next week's queue");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Typefully tool. Click to copy, paste into your agent, done.
Drafts
Copy the prompt
Copied
Draft a thread announcing our new API and schedule it for Tuesday at 10am.
Copy the prompt
Copied
Add the launch tag to my API draft.
Copy the prompt
Copied
List my scheduled drafts.
Queue
Copy the prompt
Copied
Show next week's publishing queue.
Copy the prompt
Copied
Change our posting schedule to weekdays at 9am and 4pm.
Copy the prompt
Copied
Which social sets can I post to?
Review
Copy the prompt
Copied
Comment on the launch draft asking to shorten the first post.
Copy the prompt
Copied
Resolve the open comment threads on the launch draft.
Copy the prompt
Copied
Reply to Dana's comment on the pricing draft.
SEE HOW AUTH WORKS
Each user connects their own Typefully access token once, and Scalekit sends it with every call. Tokens stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Typefully
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Typefully
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Typefully
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Typefully
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other social media and marketing connectors.
Engineering Teams
Auto release notes agent
Reads merged GitHub PRs, groups them into structured release notes, publishes the page to Notion, and announces the release in Slack. Every call runs on the engineer's own delegated OAuth.
Test other agents
See the same per-user auth pattern across other social media and marketing connectors.
ENGINEERING
Auto-release notes agent
Group merged GitHub PRs into structured release notes, publish the page to Notion, and announce the release in Slack.
ENGINEERING
Slack workflow agent (LangGraph)
LangGraph agent that drives multi-step Slack workflows: triggers, approvals, and follow-up actions per user identity.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Typefully access token looks fine in a demo. In production every draft and scheduled post looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Typefully today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Typefully as the user or through a shared token?
As the user. Each user connects their own Typefully access token once, and Scalekit sends it with every call. Audit logs attribute every draft, scheduled post, and comment to that user, not a shared service account.
Where is the Typefully access token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new access token. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Typefully?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example draft and queue reads without typefully_delete_draft, which deletes a draft permanently. typefully_create_draft can also schedule or publish a post, so leave it out for a review-only agent. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Typefully access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
What is a social set in Typefully?
A social set is a connected account profile. typefully_list_social_sets returns the sets the user's access token can reach, and drafts, queues, posting schedules, and tags all belong to one social set.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""typefully"": {
""url"": ""https://mcp.scalekit.com/typefully"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.typefully]
url = ""https://mcp.scalekit.com/typefully""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""typefully"": {
""url"": ""https://mcp.scalekit.com/typefully"",
""type"": ""http""
}
}
}