Endpoint
One URL. Sign-in is handled by OAuth, so there are no API keys to copy around:
https://socialfaker.pages.dev/mcp
| Transport | Streamable HTTP. Each POST sends one JSON-RPC message and gets JSON back. There are no sessions and no event stream. |
| Auth | OAuth 2.1 with PKCE, per the MCP authorization spec. Requests without a valid token get 401 and a WWW-Authenticate header pointing to /.well-known/oauth-protected-resource/mcp. Apps register themselves (dynamic client registration) or use a client ID metadata document. |
| Plans | Free accounts get 10 create_mockup calls a month, Pro 300. Everything else is unlimited. |
| Protocol versions | 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 |
| CORS | Open, so browser clients and the MCP Inspector work. |
Connect
Claude (web, desktop and mobile)
Open Settings, then Connectors, then Add custom connector. Name it SocialFaker, paste the URL above and save, then press Connect and sign in. In a chat, switch it on from the tools menu.
Claude Code
claude mcp add --transport http socialfaker https://socialfaker.pages.dev/mcp
Then run /mcp in Claude Code and choose SocialFaker to sign in.
Cursor, VS Code, Windsurf
Add this to your MCP config file:
{
"mcpServers": {
"socialfaker": {
"url": "https://socialfaker.pages.dev/mcp"
}
}
}
ChatGPT
Turn on developer mode, then go to Settings, Connectors, Create. Paste the URL, choose OAuth, and sign in when asked.
Clients that only run local servers
Bridge it with mcp-remote:
npx mcp-remote https://socialfaker.pages.dev/mcp
There are 5. Most conversations go list_templates, then get_template, then create_mockup. Results come back as JSON (in both content and structuredContent). If the input is wrong, the result has isError: true and a plain message saying what to fix, so the model can try again.
Network ids are x, instagram, threads, facebook, tiktok, youtube, twitch, reddit, linkedin, pinterest, bluesky, mastodon, snapchat, whatsapp, messenger, imessage, google-messages, discord, telegram, slack, teams, chatgpt, claude, gemini, iphone, spotify, google, tinder, hinge, bumble.
list_templates read-only
Lists every SocialFaker mockup template (posts, threads, stories, reels, comments, DMs and chats for 16 social networks). Call get_template next for a template's fields.
| Parameter | Type | What it does |
|---|
platform | network id: x, instagram, threads… | Only this network's templates. |
|---|
get_template read-only
Returns the editable fields of one template: keys, value types, options and defaults. Use these keys in create_mockup.
| Parameter | Type | What it does |
|---|
template required | string | Template id from list_templates, e.g. "x-post" or "whatsapp-chat". |
|---|
create_mockup saves a draft
Prepares a mockup and returns a link that opens it in the SocialFaker studio, already filled in, where the user can tweak it, add images and export a PNG. Fields left out keep the template's defaults. Each call uses one of the account's monthly AI mockups (get_usage shows how many are left). Always give the user the link. Mockups are for parody, design, education and storytelling: never make one that could pass as a real person's or brand's actual post to mislead people.
| Parameter | Type | What it does |
|---|
template required | string | Template id, e.g. "x-post". |
|---|
values required | object | Field values keyed by field key (see get_template). |
|---|
get_usage read-only
Shows the signed-in account's plan, how many AI mockups it has used and has left this month, when the allowance resets, and where to upgrade.
browse_explore read-only
Lists public mockups from the SocialFaker community feed, with links and image URLs. Good for inspiration.
| Parameter | Type | What it does |
|---|
sort | hot, new, top | hot (default), new, or top this week. |
|---|
platform | network id: x, instagram, threads… | |
|---|
limit | integer (1–24) | Default 12. |
|---|
Field values
get_template tells you each field's key, type, options and default. Send the ones you want to change to create_mockup, keyed by field. Anything you leave out keeps the sample content. Keys that don't exist are skipped and listed in notes.
| Field kind | Send |
|---|
text | string |
|---|
multiline | string, newlines allowed |
|---|
count | integer (e.g. 2400 for 2.4K) |
|---|
toggle | boolean |
|---|
choice | one of the option keys |
|---|
dateTime | ISO 8601 date-time string |
|---|
list | array of objects, one per item, using the item fields below |
|---|
image | not settable here: the user adds images in the studio |
|---|
images | not settable here: the user adds images in the studio |
|---|
For example, an X post:
{
"template": "x-post",
"values": {
"name": "Mayor Whiskers",
"handle": "mayorwhiskers",
"badge": "gold",
"text": "Running for mayor. Platform: more naps.",
"likes": 48200,
"reposts": 9100,
"views": 2400000,
"time": "2026-10-09T09:30:00Z",
"theme": "dark"
}
}
Studio links
create_mockup saves the values as a draft and returns a link like this:
https://socialfaker.pages.dev/app/?t=x-post&draft=AbC123xYz0
Opening it loads the studio with everything filled in. From there the person can tweak it, add photos and export a PNG on their own plan. Drafts only hold text, numbers and choices, never images. Anyone with the link can open it.
Limits
- 10 mockups a month on a free account, 300 on Pro. The count resets on the 1st (UTC).
get_usage shows what’s left, and when an account runs out, create_mockup returns an error with an upgrade link.
- At most 60 mockups an hour per account.
- Templates with
"pro": true (AI chats, iPhone screens, Spotify, Google search and dating apps: ChatGPT, Claude, Gemini, iPhone, Spotify, Google, Tinder, Hinge and Bumble) need a Pro account. On a free account, create_mockup returns an error with an upgrade link and doesn’t count against the allowance.
- Access tokens last an hour and refresh automatically. People can disconnect an app anytime in Settings.
- Draft links work for 90 days.
- Up to 5,000 characters per text field, 100 items per list, 64 KB per draft.
- Text containing slurs is rejected, just like Explore comments.
Try it
The easiest way is the MCP Inspector. It does the sign-in for you:
npx @modelcontextprotocol/inspector
Choose Streamable HTTP, paste the URL, then open the auth settings and run the OAuth flow. After you sign in and press Allow, you can call every tool.
With curl, start from the sign-in metadata:
curl -s https://socialfaker.pages.dev/.well-known/oauth-protected-resource/mcp
curl -s https://socialfaker.pages.dev/.well-known/oauth-authorization-server
Once you have an access token, every call is a normal JSON-RPC POST:
curl -s https://socialfaker.pages.dev/mcp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_usage","arguments":{}}}'
Play nice
SocialFaker is for parody, design, education and storytelling. Assistants are asked to say no to mockups meant to pass as a real person's or brand's actual post. If you build on this, please keep that rule.