Salamnder Social Studio docs
Same install notes as /for-ai. REST lives beside MCP at /openapi.yaml. MCP URL: https://salamndersocialstudio.com/api/mcp.
Plan, review, and publish personal social drafts with the AI assistant you already use.
Auth that works today is a header: Authorization: Bearer <key>. Pay on /pricing to get a buyer key — shown once on the return page, and emailed if Resend is set. The operator's existing studio password keeps working. Cursor Google-login DCR is not the supported path.
MCP Streamable HTTP: https://salamndersocialstudio.com/api/mcp. OpenAPI: /openapi.yaml / /openapi.json. Agent brief: /llms.txt.
Buy then connect
Pay at /pricing or /pricing?plan=starter or /pricing?plan=studio. Stripe collects email. The return page shows the MCP URL and the buyer key once. Connect with Authorization: Bearer <key>. The same key is emailed if Resend is set. Do not send a waitlist form when Checkout is live. save_draft does not publish. publish_draft is the only post.
- Pay: /pricing, or one-tap /pricing?plan=starter / /pricing?plan=studio. Stripe collects email.
- The return page shows
https://salamndersocialstudio.com/api/mcpand the buyer key once. Copy both. - Connect with header
Authorization: Bearer <key>in ChatGPT, Claude, Cursor, or Gemini. Same key works on Grok.
ChatGPT
- Pay first — same /pricing links above. Copy the buyer key from the return page.
- Phone: Settings → Apps (Developer mode if asked) → Create / add connector. If Create is missing on the phone, add it on chatgpt.com.
- Desktop / web: Settings → Apps → Create, or Settings → MCP servers. URL
https://salamndersocialstudio.com/api/mcp. - Authorization
Bearer <key>if the UI offers a header, or complete the password / OAuth form with the same key.initializeno longer needs the key first — ChatGPT can handshake, then send the key on tool calls. Do not use Cursor Google-login DCR.
Claude
- Pay first — same /pricing links above.
- Claude.ai: Settings → Connectors → Add custom connector. URL
https://salamndersocialstudio.com/api/mcp. Request headerAuthorization=Bearer <key>. - Claude Desktop: same URL + Bearer header in the MCP config (the JSON below). No Google-login DCR.
- If Claude opens a password form, that is the operator studio lock — same key.
{
"mcpServers": {
"salamnder-social-studio": {
"url": "https://salamndersocialstudio.com/api/mcp",
"headers": {
"Authorization": "Bearer <key>"
}
}
}
}Cursor
Pay first — same /pricing links above. Then put this in mcp.json. Header Bearer is the path that works. Do not use Google-login DCR.
{
"mcpServers": {
"salamnder-social-studio": {
"url": "https://salamndersocialstudio.com/api/mcp",
"headers": {
"Authorization": "Bearer <key>"
}
}
}
}Gemini
- Pay first — same /pricing links above.
- OpenAPI action: import
https://salamndersocialstudio.com/openapi.yaml. HTTP Bearer:Authorization: Bearer <key>. - If the Gemini surface supports MCP Streamable HTTP, use
https://salamndersocialstudio.com/api/mcpwith the same header.
Grok
Pay first, then custom connector URL https://salamndersocialstudio.com/api/mcp. A probe GET is a 200 hello. Add Authorization: Bearer <key> if the UI offers a header. Tool calls still require the key; initialize does not.
Tools
list_drafts: When to use: see what is already on the shelf. Lists saved drafts. Does not publish.
get_draft: When to use: read one draft (LinkedIn caption, X thread, media) before editing or posting. Does not publish.
media_specs: When to use: before picking or uploading a file. Per-platform image/video/document limits (formats, ratios, pixels). Optional platform and kind filters. Does not publish.
upload_media: When to use: host a file before save_draft. Returns signedUrl + hostedUrl. PUT the bytes, then attach hostedUrl on save_draft. Does not publish.
save_draft: When to use: create or update a draft. text = LinkedIn/shared caption; documentTitle = PDF title; thread = X parts; media[].platforms = optional per-file targets. Does not publish.
list_connections: When to use: check which personal LinkedIn/X/Facebook/Instagram/Threads accounts are live before schedule_draft or publish_draft. No tokens returned.
schedule_draft: When to use: queue a saved draft for later. Pass id, scheduledFor (ISO with offset, e.g. 2026-09-20T09:00:00-07:00), and idempotencyKey. Does not publish — a later cron job fires the queue.
publish_draft: When to use: the draft should go live now. The only tool that posts immediately. Requires a saved draft id and named platforms. Use schedule_draft to queue instead.
list_scheduled: When to use: see queued and recent scheduled posts (id, scheduledFor, status, preview, targets). Does not publish.
get_scheduled: When to use: read one scheduled post (full draft + time + status) before editing or cancelling. Does not publish.
update_scheduled: When to use: move a pending queued post or replace its content from a saved draft. Only while pending. Does not publish.
cancel_scheduled: When to use: cancel a pending queued post so it will not fire. Only while pending. Does not publish.
Privacy
Using this connector stores drafts you save and posts you publish under the Salamnder Privacy Policy. Tool arguments also go to the MCP host you connected (ChatGPT, Claude, Cursor, and so on) under that host's policies.
Rules agents must not miss
save_draftdoes not publish or schedule. Callschedule_draftto queue for later, orpublish_draftto post now.schedule_draftdoes not post — a later cron job fires the queue.- Personal accounts only. The buyer connects their own LinkedIn and X.
- Views-your-own banking commentary is the user's problem, not this API's.