Skip to main content
Glama
alexcloudstar

Marketing Assistant MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
X_CLIENT_IDYesX OAuth 2.0 Client ID. Required.
X_REDIRECT_URINoMust match the callback registered in the X developer portal. Default: http://127.0.0.1:8879/callbackhttp://127.0.0.1:8879/callback
X_CLIENT_SECRETNoSet if your X app is a confidential client. Omit if public client.
MAKERS_PAGE_DATA_DIRNoWhere drafts are stored. Default: ~/.local/share/makers-page-mcp~/.local/share/makers-page-mcp
MAKERS_PAGE_CONFIG_DIRNoWhere credentials are stored. Default: ~/.config/makers-page-mcp~/.config/makers-page-mcp
MAKERS_PAGE_MAX_POST_LENGTHNoMax characters per post. Default: '280'280
MAKERS_PAGE_REQUIRE_APPROVALNoSet to 'false' to let agents publish drafts without a separate approval step. Default: 'true'true

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_draftA

Create a draft social post for a channel (currently only "x"). Supports text, threads (parts), polls, media paths, quote, community, and paid partnership. RULE: never put http(s) links in the main post (text / parts[0]) — put every URL in a follow-up thread part (parts[1], parts[2], …). Only set allowLinksInMainPost=true if the user explicitly forces a link in the main post. The draft is saved locally and is NOT published until it is approved and then explicitly published.

list_draftsA

List locally stored drafts, optionally filtered by status.

get_draftB

Fetch a single draft by id.

update_draftA

Edit a draft's content (text, parts, poll, media, quote, community, paid partnership). Same link rule as create_draft: no http(s) URLs in the main post unless allowLinksInMainPost is true (only when the user explicitly insists). Pass null to clear an optional field. If the draft was already approved, this resets it back to "draft" status so it must be re-approved before publishing. To change a live post, use edit_published_draft.

approve_draftA

Mark a draft as approved by the human user. Only approved drafts can be published. Only call this after the user has explicitly reviewed and approved the draft text.

reject_draftA

Mark a draft as rejected. Rejected drafts cannot be published. Also usable to reconcile a draft stuck in "publishing" after a crashed publish_draft call once you have verified the post did NOT go out on X. If live post ids were already recorded (partial thread publish), call delete_published_draft instead.

publish_draftA

Publish an approved draft to X via the X API v2. Supports threads, polls, media, quotes, community posts, and paid partnership. Fails if the draft has not been approved yet (unless approval is disabled in config). Returns the live post URL(s).

delete_published_draftA

Delete every live post id recorded on a draft (the root and any thread replies), then mark the local draft as deleted. Works whenever live ids are recorded — published drafts, partial "publishing" failures, or corrupt/legacy records. Own posts only.

edit_published_draftA

Edit the root post of a published draft via POST /2/tweets with edit_options.previous_post_id. Requires X Premium; edits are limited (~30 minutes / 5 edits) and each edit creates a new post id (stored locally). Re-attaches media (re-uploaded from mediaPaths) and quoteTweetId when present. Polls and community posts cannot be edited. Only the thread root is edited. Same link rule: no http(s) URL in the root unless allowLinksInMainPost is true (or was already set on the draft) because the user explicitly insisted.

get_x_accountA

Check whether this MCP server is connected to an X account and, if so, return the account's username and id.

lookup_x_userA

Resolve an X @handle to a user id (and whether they can receive DMs from you). Useful before create_dm_draft.

get_dm_rate_limitA

Show local DM send rate limits and current usage (hourly, daily, min interval between sends).

create_dm_draftA

Create a draft direct message. Requires recipientId or recipientUsername (or conversationId for an existing thread). NOT sent until approved and send_dm_draft is called. Supports one optional media attachment.

list_dm_draftsA

List locally stored DM drafts, optionally filtered by status.

get_dm_draftB

Fetch a single DM draft by id.

update_dm_draftA

Edit a DM draft. Pass null to clear optional fields. Resets approved drafts back to draft status.

approve_dm_draftA

Mark a DM draft approved. Only approved drafts can be sent. Call only after the user explicitly reviewed the message.

reject_dm_draftA

Mark a DM draft rejected. Also usable to reconcile a draft stuck in sending after a failed attempt.

send_dm_draftA

Send an approved DM draft via the X API. Enforces local rate limits (hourly, daily, min interval). Requires dm.read and dm.write scopes (re-auth after upgrade).

list_dm_eventsA

Read recent DM events in a 1:1 conversation with a participant (newest first, up to 100). Requires dm.read scope.

list_dm_inboxA

Read recent DM events across all conversations (inbox view). Requires dm.read scope.

list_dm_conversation_eventsA

Read recent DM events in a conversation by conversationId (works for group and 1:1 threads).

get_x_post_metricsA

Fetch lifetime public metrics (impressions, likes, reposts, replies, quotes, bookmarks) for up to 100 post ids. Read-only.

get_x_account_summaryA

Summarize your account using GET /2/tweets/analytics: calendar-day impressions and engagements (aligned with x.com account analytics), period totals, and top posts for the window. Read-only; no local DB.

analyze_x_posting_timesA

Analyze when you post vs average lifetime impressions by hour of day. Derived from your recent timeline; read-only, no DB.

create_retweet_draftA

Create a draft retweet or undo-retweet action. NOT executed until approved and retweet_post or undo_retweet is called. Pass the numeric post id from an X URL (e.g. .../status/1234567890).

list_retweet_draftsA

List retweet/undo drafts, optionally filtered by status.

get_retweet_draftA

Fetch a single retweet/undo draft by id.

approve_retweet_draftA

Mark a retweet/undo draft approved. Only approved drafts can be executed. Call only after the user explicitly reviewed the action.

reject_retweet_draftA

Mark a retweet/undo draft rejected. Also usable to reconcile a draft stuck in executing after a failed attempt.

retweet_postA

Retweet an approved draft to X immediately via POST /2/users/:id/retweets. Requires tweet.write scope.

undo_retweetA

Undo an approved retweet draft on X immediately via DELETE /2/users/:id/retweets/:tweet_id. Requires tweet.write scope.

be_trendyA

Discover what's trending right now on X within a specific product niche, so you can ride the conversation for engagement. Searches recent X posts scoped to the niche/keywords, not X's generic global trending list (which rarely surfaces niche topics), filters out spam and near-duplicates, and returns algorithmically scored trending topics with real sample tweets and engagement numbers, real demand-signal posts (people asking for recommendations/alternatives), and a post-timing recommendation. This tool does not generate content itself: after calling it, use the returned trendingTopics and painPointSignals, plus the product's name/description/audience from this conversation, to write natural, platform-appropriate content (tweet, thread, LinkedIn post, Bluesky post, Reddit title, Hacker News title) that connects the product to the trend. Avoid AI-sounding phrasing, do not fabricate engagement numbers, and ground any claims in the sample tweets returned.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexcloudstar/makers.page-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server