AdvisorPPC X Organic
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| X_ACCESS_TOKEN | Yes | X API access token with user-context OAuth 2.0 PKCE permissions |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| x_organic_get_meA | GET /2/users/me — the user on this OAuth2 token. Call first when you need user id for timeline, likes, bookmarks, or mentions. Never invent a handle. |
| x_organic_lookup_userA | Look up a user by username (without inventing @handles) or by numeric id. Uses GET /2/users/by/username/:username or GET /2/users/:id. |
| x_organic_lookup_usersA | Batch lookup. Pass usernames XOR ids (comma-separated v2). Never invent handles. |
| x_organic_search_usersB | GET /2/users/search. Query must be what the user asked to find — do not invent people to follow. |
| x_organic_get_postA | GET /2/tweets/:id with public metrics, author, media, and referenced posts. |
| x_organic_lookup_postsB | GET /2/tweets?ids=… up to 100 ids the user named. |
| x_organic_user_postsA | GET /2/users/:id/tweets. Pass user_id from lookup/me. exclude=replies,retweets optional. |
| x_organic_my_timelineA | GET /2/users/:id/timelines/reverse_chronological for the authenticated user (home feed). Billed per read. |
| x_organic_mentionsB | GET /2/users/:id/mentions for the authenticated user (or a named user_id you manage). |
| x_organic_search_recentA | GET /2/tweets/search/recent (last 7 days). Query must be the user's. Billed per matching post. Do not run unbounded brand-watch loops. |
| x_organic_list_repliesA | Recent-search composite: conversation_id:{post_id} is:reply. Use this to triage comments. Billed per matching post. Then reply with x_organic_reply (confirm required; self-serve only if they summoned you). |
| x_organic_get_quote_tweetsC | GET /2/tweets/:id/quote_tweets. Quote creation on self-serve is Enterprise-only; reading quotes is not. |
| x_organic_liked_postsB | GET /2/users/:id/liked_tweets. Defaults to the authenticated user. |
| x_organic_list_bookmarksB | GET /2/users/:id/bookmarks for the authenticated user. Scope bookmark.read. |
| x_organic_create_postA | POST /2/tweets. Use only the copy/media the user supplied — never invent text or handles. Requires confirm=true after an explicit named ask. X API pay-per-use (as of 2026): ~$0.015 per plain post, ~$0.20 per post that contains a link. Warn the user before posting links. X API has no native schedule. Use AdvisorPPC x_organic_schedule_* tools — never invent a publish time outside the job store. Up to 4 photos, 1 GIF, or 1 video via media_ids from x_organic_upload_media. |
| x_organic_replyA | POST /2/tweets as a reply (in_reply_to_tweet_id). Requires confirm=true. Do not invent copy. Do not spam-reply. Self-serve / pay-per-use: replies to someone else only succeed if they @mentioned you or quoted you. Enterprise is unrestricted. Self-replies (your own thread) are the intended thread mechanism. X API pay-per-use (2026): ~$0.015/post, ~$0.20 if the text contains a link. Warn before posting links. |
| x_organic_quoteA | POST /2/tweets with quote_tweet_id. Requires confirm=true. Quote-posting is Enterprise-only on self-serve/pay-per-use as of 2026-09 — expect 403 on those plans. Never invent post text, DM copy, handles, or media. Use only what the user supplied. X API pay-per-use (2026): ~$0.015/post, ~$0.20 if the text contains a link. Warn before posting links. |
| x_organic_repostA | POST /2/users/:id/retweets. Requires confirm=true after the user named the post to repost. |
| x_organic_unrepostB | DELETE /2/users/:id/retweets/:tweet_id. Requires confirm=true. |
| x_organic_delete_postA | DELETE /2/tweets/:id. You can only delete posts you authored. Requires confirm=true after the user named the exact post. Destructive and irreversible. |
| x_organic_create_threadA | Composite: publish the first post, then chain the rest as replies (in_reply_to of the previous). Use only the array of copy the user supplied — never invent posts. Requires confirm=true once for the whole thread. If a later post fails, STOP and return what already went up. X API pay-per-use (as of 2026): ~$0.015 per plain post, ~$0.20 per post that contains a link. Warn the user before posting links. X API has no native schedule. Use AdvisorPPC x_organic_schedule_* tools — never invent a publish time outside the job store. |
| x_organic_hide_replyA | PUT /2/tweets/:id/hidden. Only works for replies on a conversation you own. Requires confirm=true. Scope tweet.moderate.write. hidden=true hides, false unhides. |
| x_organic_likeA | POST /2/users/:id/likes. Reversible. Scope like.write. Do not mass-like. |
| x_organic_unlikeB | DELETE /2/users/:id/likes/:tweet_id. |
| x_organic_bookmarkC | POST /2/users/:id/bookmarks. Scope bookmark.write. |
| x_organic_unbookmarkD | DELETE /2/users/:id/bookmarks/:tweet_id. |
| x_organic_upload_mediaA | Upload an image or video for an organic post (tweet_image / tweet_gif / tweet_video) or a DM (dm_*). Images use simple upload; video and files >5MB use v2 chunked INIT/APPEND/FINALIZE and poll STATUS. Never amplify_video (ads). Provide exactly one of media_url or media. If the intended media failed to upload or process, STOP. Do not substitute a still, a source image, or a pre-existing library asset. |
| x_organic_reply_with_mediaA | Composite: upload media (if given) then reply. If upload fails, STOP — do not post a text-only substitute. Requires confirm=true. Self-serve / pay-per-use: replies to someone else only succeed if they @mentioned you or quoted you. Enterprise is unrestricted. Self-replies (your own thread) are the intended thread mechanism. X API pay-per-use (2026): ~$0.015/post, ~$0.20 if the text contains a link. Warn before posting links. |
| x_organic_list_dm_eventsB | GET /2/dm_events (MessageCreate). One page of inbox events with sender expansion. Scope dm.read. Do not dump DMs into public posts. |
| x_organic_list_dm_conversationA | GET /2/dm_conversations/:id/dm_events. Pass a conversation id from inbox_summary or list_dm_events. Scope dm.read. |
| x_organic_send_dmA | Send one DM to a named recipient (participant_id or username) or an existing dm_conversation_id. Requires confirm=true after an explicit named ask. Never invent copy. One recipient — no bulk unsolicited DMs. Optional media_id from x_organic_upload_media with destination=dm. Do not spam-reply and do not send bulk unsolicited DMs. One named conversation at a time. |
| x_organic_inbox_summaryA | Composite: fetch recent DM events and group by conversation with the last message. Use this to triage inbox, then x_organic_list_dm_conversation + x_organic_send_dm (confirm) to answer. Do not auto-reply. |
| x_organic_scheduler_statusA | AdvisorPPC's own job queue (X API has no native schedule). Shows worker, agents, upcoming jobs, last runs. HTTP mode starts the worker by itself. |
| x_organic_scheduler_setupA | Self-configure the AdvisorPPC scheduler for Claude, ChatGPT, Cursor, Grok, raw HTTP, or the AdvisorPPC backend. Starts the in-process worker, writes the job store, returns paste-ready MCP snippets. Does not invent posts. |
| x_organic_scheduler_settingsB | Get or patch timezone, digest webhook_url (Claude/ChatGPT/AdvisorPPC callback), tick_ms, public_url. |
| x_organic_schedule_listA | List AdvisorPPC queue jobs (not X native). Filter by status. |
| x_organic_schedule_createA | Enqueue a future organic action on AdvisorPPC's queue (X cannot natively schedule). tool must be allowlisted. arguments must be the user-supplied copy/ids — never invent text. confirm=true after they named the time and the copy. Enables publish_queue so the worker will fire it. Kinds: once (run_at ISO), every (every_ms), cron (5-field). |
| x_organic_schedule_cancelA | Cancel (terminal), pause, or resume a named job id. confirm=true after the user named the job. |
| x_organic_agents_listA | Built-in agents: publish_queue, mention_digest, inbox_digest, health. Digests never auto-reply; they snapshot and optionally POST webhook_url for Claude/ChatGPT/AdvisorPPC. |
| x_organic_agent_setA | Turn an agent on/off and set every_ms. Live agents (if any) need confirm=true. mention_digest / inbox_digest never send replies or DMs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| x-organic-dashboard | Inline table of posts, mentions, or DM conversations from the last tool result. |
| x-organic-scheduler | AdvisorPPC job queue, agents, and vendor setup (Claude / ChatGPT / Grok). |
TDQS
Scored across 40 tools
Most tools map to distinct X API resources and actions (create_post, reply, quote, repost, like, bookmark, etc.). A few overlapping utilities exist — list_dm_events vs inbox_summary both fetch recent DM events, and schedule_list vs scheduler_status both surface queue state — but descriptions clarify their intent.
Uniform x_organic_ prefix with mostly verb_noun structure (create_post, send_dm, lookup_user, schedule_cancel). Some deviations exist — user_posts, mentions, my_timeline, liked_posts — but they are readable and don't break the pattern.
40 tools is well beyond the heavy threshold. While the server covers posting, scheduling, DMs, media, and agents, the sheer count makes tool selection cumbersome and suggests scope creep that could have been consolidated (e.g., merging reply variants or DM listing helpers).
The toolkit covers the full organic X lifecycle: creation, engagement, reading, media upload, scheduling, agent monitoring, and DMs. Notable gaps are follow/unfollow management and follower/analytics endpoints, but the stated organic-purpose surface is largely complete.