MCP Server Documentation
Lots Social MCP Server
Connect AI agents like Claude and Cursor to Lots Social using the Model Context Protocol
Quick Information
MCP Endpoint
https://api.lots.social/mcpAvailable Tools
39 tools
Authentication
OAuth 2.1 with PKCE
Setup Instructions
Configure your MCP client to connect to Lots Social
Add this configuration to your Cursor settings:
{
"mcpServers": {
"lotssocial": {
"url": "https://api.lots.social/mcp"
}
}
}Steps:
- Open Cursor Settings (Cmd/Ctrl + ,)
- Search for "MCP Servers"
- Click "Edit in settings.json"
- Add the configuration above
- Restart Cursor
- Cursor will automatically discover OAuth endpoints and handle authentication
Authentication
This server implements OAuth 2.1 with PKCE for secure authentication
OAuth 2.1 with PKCE (S256)
Most modern MCP clients will automatically discover and handle the OAuth flow. The server uses OAuth 2.1 with PKCE (S256) for secure authentication.
OAuth Discovery
https://api.lots.social/.well-known/oauth-authorization-serverAuthorization Endpoint
https://api.lots.social/api/oauth/authorizeToken Endpoint
https://api.lots.social/api/oauth/tokenHow it works:
- Clients automatically discover OAuth endpoints
- Users are redirected to authenticate via browser
- Authorization code is exchanged for access token
- Bearer token is used for all MCP requests
Available Tools
39 MCP tools available for Lots Social. Use these tool names when calling the MCP server.
access
get_connect_linkGet Connect Link
Create a link the person opens in their browser to connect a social account (LinkedIn, Instagram, X and the rest) to LotsSocial, or to reconnect one they already have. Use it whenever they ask to connect, add or link an account, or when list_connected_accounts shows the account they want to post to is missing. To renew an existing account (expired, needs reconnecting, or posts fail with an authorization error) pass its account_id: the link renews that same account in place, keeping its ID, brand, post history and scheduled posts, and adds nothing new. Give them the url and ask them to open it; never open it yourself, because it signs in to their social account. The link works for one hour. A new-account link can connect several accounts; accounts beyond plan coverage are paid from credits automatically, and if the balance cannot cover the account, offer get_credits_link. Afterwards call list_connected_accounts (or get_account_details for a reconnect) to confirm. For an agency client who should connect their own accounts without a LotsSocial login, pass purpose client with a label (the client's name) and usually brand_id: that link lasts up to 7 days (expiry_days), returns link_id, is shown only once and can be listed with list_connect_links and revoked with revoke_connect_link (or on the Accounts page). Only workspace owners, admins and managers can create one.
get_credits_linkGet Credits Link
Create a checkout link to buy LotsTech Credits, which pay for connected accounts beyond plan coverage. Use it when the person asks to add credits, or when get_billing_status or get_connect_link shows there are not enough credits for what they want. Ask how much they want to spend if they have not said (minimum $10). Give them the url to pay in their browser; never ask for card details in the chat. Purchased credits never expire. Call get_billing_status afterwards to confirm they arrived.
list_connect_linksList Connect Links
List a workspace's connect links, newest first: link_id, label, brand_id, platforms, status (active, expired or revoked), expires_at and accounts_connected. Client links by default; purpose self shows the one-hour links agents created, all shows both. URLs are never shown again after creation. Owners, admins and managers only.
revoke_connect_linkRevoke Connect Link
Revoke a connect link so it no longer opens. Accounts already connected through it stay connected. The link is kept (not deleted) with its history. Owners, admins and managers only.
media
update_media_metadataUpdate Media Metadata
Update a media asset description, alt text, or tags so people and agents can find and reuse it.
research
get_brand_winning_postsGet Brand Winning Posts
Return the brand’s published posts ranked against its median engagement per platform, from saved analytics. Use for requested performance analysis or relevant prior examples. Reports coverage and relative performance; it does not require a research workflow.
strategy
get_platform_playbookGet Platform Playbook
Get versioned, dated platform guidance with official-policy, observed-practice, and experimental evidence kept separate. Agents must obey official rules and treat reach guidance as testable rather than guaranteed.
workspaces
invite_workspace_memberInvite Workspace Member
Invite someone to a workspace by email as admin, manager, creator or viewer (never owner). Sends the LotsSocial invitation email; the person accepts it signed in with that email address. Owners and admins only. Confirm the email address and role with the person first. Inviting an address with a pending invitation sends it again (at most once a minute). emailSent says whether the email went out.
leave_workspaceLeave Workspace
Leave a workspace you are a member of. The owner cannot leave (the owner deletes the workspace instead). You lose access at once; your posts and media stay in the workspace. Confirm with the person first.
list_workspace_membersList Workspace Members
List the members of a workspace: member_id, email, role (owner, admin, manager, creator, viewer), status and joined_at; is_you marks the caller. Owners and admins also get pending_invitations. Any member can call it.
remove_workspace_memberRemove Workspace Member
Remove a member from a workspace. Owners and admins only; the owner cannot be removed. The person loses access at once; their posts and media stay in the workspace. Confirm with the person first.
update_workspace_memberUpdate Workspace Member
Change a member's role to admin, manager, creator or viewer. Workspace owners only. No one can be made owner, and the owner's own role cannot be changed.
General
bulk_create_social_postsBulk Create Social Media Posts
Create up to 50 drafts or scheduled posts for one shared set of connected accounts. Brand-scoped work must pass brand_id. Reddit and Pinterest need platform_fields (subreddit; board_id and title), batch-wide or per post; media-required platforms need media before scheduling.
cancel_scheduled_postCancel Scheduled Post
Cancel a scheduled post and return it to draft. Use list_social_posts with type=scheduled to find the post UUID.
get_funding_statusCheck product funding
Check plan coverage, credit funding and current capacity rates. Plan coverage is used first; capacity beyond it is paid from the owner's credits automatically, charged daily (free credits first, then plan credits, then purchased). If credits run low, give the returned settings_url so the owner can top up or choose a plan.
complete_media_uploadComplete Media Upload
Finish an upload started with create_media_upload after the file has been PUT to upload_url. Verifies the file, saves it to the media library and returns its media_id for create_social_post or update_social_post. Add a description and alt text so the file can be found and reused.
create_brandCreate Brand
Create a brand (a named group of connected accounts, such as one company or client) in a workspace, optionally putting connected accounts in it straight away. An account already in another brand is moved and the response names the brand it left. Brand names are unique per workspace; a clash returns the existing brand_id. Use it when the person asks to group accounts, then pass brand_id when posting for that brand. To connect new accounts straight into the brand, call get_connect_link with its brand_id.
create_media_uploadCreate Media Upload
Start uploading a video or image file you have locally. Returns a short-lived upload_url: PUT the raw file bytes to it with the given Content-Type header, then call complete_media_upload with the file_key to get a media_id. Use this for every video and for any image you cannot pass as a URL.
create_social_postCreate Social Media Post
Create one post for selected connected accounts: a draft, scheduled (scheduled_time), or published right away (publish_now: true, only after the person confirms). Use platform_captions for account-specific copy and platform_fields for Reddit (subreddit, title, flair), Pinterest (board_id, title, link) and TikTok on our own app (send_as_draft). Brand-scoped work must pass brand_id. Scheduling and publishing now run every network rule (validate_social_post is the dry run); drafts may stay incomplete. publish_now returns accounts[] with each account's status; get_social_post shows the final results. A draft for TikTok on our own app returns review_url, where the person approves it.
create_workspaceCreate Workspace
Create a new workspace owned by the person, for example one per business or client they run. Accounts, posts, media and results in different workspaces never mix. Workspaces are free and unlimited. Afterwards, use get_connect_link with the new workspace_id to connect its social accounts.
delete_mediaDelete Media File
Permanently deletes a media file. IMPORTANT: Requires media_id — call list_media first to get the UUID of the media file. Deletion is irreversible.
delete_social_postDelete Social Post
Permanently delete a draft or scheduled post from LotsSocial. Published posts cannot be deleted: LotsSocial cannot remove a post from the network, so the refusal returns each network's live link for the person to open and delete it there while signed in. Creators can delete only their own drafts; owners and admins can delete any draft or scheduled post in their workspace. Managers cannot delete posts.
disconnect_accountDisconnect Account
Disconnect a connected social account from LotsSocial so it stops counting toward daily account charges. Use only when the person asks to remove that account. Its LotsSocial post history and analytics are removed with it; posts already on the network stay live there. Refused while the account is in a scheduled post: cancel or edit those posts first. Reconnect later with get_connect_link.
get_account_detailsGet Account Details
Get one connected account's profile, follower count, connection health (active, expiring or needs reconnect, with the last error) and posting record. account.audience has the latest daily follower count (subscribers on YouTube) with captured_on and followers_change_7d / followers_change_30d; each change states the days it actually covers, which is shorter while tracking is new. Networks without counts return unavailable_reason, never 0. Reddit and Pinterest accounts carry posting_fields: what to pass in platform_fields, and for Pinterest the account's boards (board IDs). Use it when posts to the account fail or the person asks about it; if it needs reconnecting, call get_connect_link with account.reconnect.arguments (this account_id) and give them the link: it renews this same account in place.
get_aggregate_analyticsGet Aggregate Analytics
Return normalized engagement totals, platform breakdowns, top posts, analytics freshness and follower counts for a workspace, brand, account subset, platform, or date range. Totals cover only posts with analytics; analytics_freshness.posts_without_analytics counts published posts that have none yet or whose network does not share them. summary.avg_engagement_rate counts only posts that reported exposure (impressions, else views, else reach): their engagement over their exposure; summary.engagement_rate_basis says how many posts and which denominators it used, and the rate is null with a reason when none did. audience lists every account in scope with its latest daily follower count, captured_on, followers_change_7d / followers_change_30d (each states the days it covers) or unavailable_reason; it ignores the date range.
get_media_detailsGet Media Details
Retrieves details for a specific media file (image/video). IMPORTANT: Requires media_id — call list_media first to get the UUID of the media file.
get_post_analyticsGet Post Analytics
Return engagement analytics for one published post, per network. Use list_social_posts with type=posted to find the post UUID. A network entry with analytics_available=false has no data yet (or the network does not share it) and gives a reason: report that reason, never as zero engagement.
get_social_postGet Social Post Details
Retrieves complete details for a single social post including all media files, platform logs, connected accounts, publishing status, and edit history. Enforces role-based access control - creators can only access their own posts unless they have manager/admin permissions.
list_brandsList Brands
List the brands in a workspace with how many connected accounts each holds. Brands group accounts (for example one company or client); pass a brand_id when posting so only that brand's accounts are used. Create or regroup brands with create_brand and update_brand.
list_connected_accountsList Connected Accounts
List connected social accounts for you, a workspace or one brand: platform, name, connection status, brand, caption_limit (characters this account accepts; X Premium allows 25,000, free X 280) and requires_media (Instagram, YouTube, Pinterest and TikTok need an image or video). Write each caption to its account's caption_limit. When working for a brand, pass brand_id: a workspace can hold several brands' accounts.
list_mediaList Media Files
Search accessible images and videos by filename, tags, description, or alt text before asking the owner for a new asset.
list_social_postsList Social Posts
List draft, scheduled, or published posts with platform, media, creator, workspace, and optional brand filtering.
list_workspacesList Workspaces
Retrieves all workspaces the authenticated user is a member of. Returns workspace details including name, slug, type, owner, and the user role and join date for each workspace. Automatically checks subscription status.
update_brandUpdate Brand
Rename a brand or move connected accounts into or out of it. add_account_ids moves accounts in from no brand or another brand (reported as moved_from); remove_account_ids leaves them in no brand. Accounts must be connected in the brand's workspace. Use it when the person asks to regroup accounts, or when create_social_post refuses accounts from different brands and the person wants them in one brand. Scheduled posts keep their accounts.
update_social_postUpdate Social Post
Update an existing draft or scheduled post, or publish it right away with publish_now: true (only after the person confirms). Supports account-specific captions, Reddit and Pinterest platform_fields (merged over the saved ones), and replacement platform/media selections; preserves existing attribution and fields not changed by the request. publish_now runs every network rule and returns accounts[] with each account's status; get_social_post shows the final results.
update_workspaceUpdate Workspace
Rename a workspace or change its description or logo. Owners and admins only. Manage its members with list_workspace_members, invite_workspace_member, update_workspace_member and remove_workspace_member. Deleting a workspace is done in the LotsSocial app.
upload_mediaUpload Media
Store an image or video in the LotsSocial media library from a public link (url), or an image from base64, and return its media_id and public URL. Videos (MP4, MOV, WebM up to 200 MB) are streamed from the link. For a file on your computer, use create_media_upload and complete_media_upload instead. Add a description and alt text so the asset can be found and reused.
validate_social_postValidate Social Post
Check a post against every network rule without saving it: caption and title limits, required media and fields, file count, format, size, aspect ratio, video length, transparency and animation, per account. Takes the same input as create_social_post (or post_id to check an update, or posts plus platforms for a bulk batch). Returns valid, errors (block scheduling), warnings (a draft can keep them) and notices (files LotsSocial will convert), each with account_id, media_id and the sentence the dashboard shows. Fix the errors before scheduling.