ChatGPTX
Connect ChatGPT to your X
About a minute, three moves. Then ChatGPT writes, designs, schedules and publishes your X posts, and you approve each one. Works in chatgpt.com and the desktop apps.
Or another network
Add Shapeless to ChatGPT
In ChatGPT, add Shapeless with the URL below. A Shapeless tab opens: sign in (or create an account) and allow. That is the whole install; nothing to download, no API key.
- 1
Once: open Settings, then Security and login, and switch Developer mode on.
- 2
Open chatgpt.com/plugins and press + (Create). A New Plugin dialog opens.
- 3NameName
Shapeless - 4Server URLServer URL
https://shapelessai.com/mcp - 5
Authentication: OAuth. Tick "I understand and want to continue", then Create. A Shapeless tab opens: sign in and allow the connection.

Steps read from Building MCP servers for ChatGPT and API integrations and Authentication for plugins on . Vendors move menus; if a step no longer matches, the source is the place to check and hello@shapelessai.com is where to tell us.
Connect X to Shapeless, once
In Shapeless, open Accounts and connect your X account through X's own sign-in. Shapeless keeps that connection; ChatGPT never sees a password or token for it.
Ask ChatGPT in plain words
In a new chat, type @Shapeless or pick Shapeless from the + menu. Then ask in plain words. Every draft lands in your Shapeless queue for approval unless you say otherwise, and you are asked before anything goes out.
Draft a thread on X about why we rebuilt onboarding, six posts, with the demo GIF on the first.Post this to X now: [paste]. Keep it under 280 characters and add the screenshot.Queue three X posts for the launch tomorrow: 8am, noon, 5pm.
X allows 280 characters per post and 4 images, 1 video up to 2 min 20 s, from X's own documentation as read on 2026-07-21. Shapeless enforces that table before a draft is queued. The full table is on the X spec page; check a draft yourself with the free X character counter.
Questions
- Which ChatGPT plans can add Shapeless?
- Plus, Pro, Business, Enterprise and Edu. Developer mode is what lets a personal account add its own plugin; a workspace admin can switch it off.
- Do I need a X developer app or API key?
- No. You connect your X account to Shapeless once, under Accounts, through X's own sign-in. Shapeless holds that connection; ChatGPT never sees a X token, and you never paste a key into ChatGPT either - it signs in to Shapeless with OAuth.
- Will ChatGPT post to X without asking me?
- Not unless you set a standing agent to auto-publish. A job proposes drafts and waits for your approval in Shapeless or in the chat; the tools that approve, publish or spend are flagged, so ChatGPT asks you before running one.
- Can it make the X media, not just the words?
- Yes - that is the point. We publish text, images and video here; PDF documents we do not deliver to X yet. X takes one video up to 2 min 20 s. You brief it in the chat; Shapeless designs the images or renders the narrated video with your actor and captions, and hands the draft back for approval.
- What does X allow in a post?
- 280 characters and 4 images, 1 video up to 2 min 20 s, per X's own documentation as we last read it on 2026-07-21. Shapeless enforces the same table its publishing engine does, so a draft that breaks a limit is fixed before it is queued.
- How do I disconnect it?
- Settings → API keys → Connected apps in Shapeless lists ChatGPT with a Disconnect button; revoking there ends its access at once. ChatGPT also lets you remove the connector on its side.
Also
For developers and agents: the MCP server, the tools, the CLI
https://shapelessai.com/mcpA remote MCP server over streamable HTTP. Sign-in is OAuth 2.1 with dynamic client registration and PKCE, so any host - ChatGPT or your own agent - registers itself and opens a Shapeless tab to sign in and allow; the resource metadata is at /.well-known/oauth-protected-resource. Read tools run freely; anything that publishes, spends or overwrites is flagged destructive so the host asks first. The token is revocable under Settings → API keys → Connected apps.
| Tool | What it does | Runs |
|---|---|---|
| me | Who this credential belongs to: email, plan, credit balance. | reads |
| connections_list | Connected social accounts (identity only, no tokens). | reads |
| jobs_create | Start a durable job from a goal, optionally with files attached. The run keeps going server-side; returns the job id and its web url to poll or continue. | drafts |
| jobs_list | List jobs with liveness and the web url of each, 200 per page, newest first. A non-null nextCursor means older jobs exist: pass it back as before. | reads |
| jobs_get | One job in full: transcript, running/idle status, outputs (posts with queue state, media) and its web url. Use jobs_brief when you only need enough to reply. | reads |
| jobs_brief | Compact context for continuing a conversation: the last messages clipped, an artifact inventory, post statuses, and the web url. Use jobs_get for the full transcript, jobs_continue to reply. | reads |
| jobs_tail | Watch a job's run: replays its events from the cursor, then follows live until the run ends, 60 seconds pass, or 200 events. Returns {live, cursor, events} - resume with that cursor. {live: false} means no run stream to attach to; the job may still have finished work, so read jobs_get. | reads |
| jobs_continue | Send another message to a job, optionally with files attached - also the way to resume a stuck or failed run with full history. | drafts |
| jobs_stop | Stop a running job. | asks you first |
| posts_list | The post queue: proposed drafts, scheduled posts, published history. | reads |
| posts_get | One post's live state. | reads |
| posts_approve | PUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out. | asks you first |
| posts_dismiss | Dismiss proposed posts - nothing goes out. | asks you first |
| posts_publish | PUBLISHES CONTENT NOW: pushes a queued post to the platform immediately. | asks you first |
| characters_list | The account's actors: who they are, what their voice is, and which parts are locked. voiceDescription is the casting direction a designed voice was written from - read it before designing another one, and reuse the actor that already fits. | reads |
| characters_voice | SPENDS CREDIT: gives an actor a voice. description designs one from casting direction (kept on the character, so later runs can reuse the actor); sampleMediaKey clones a real voice and requires consent: true - the user's own attestation that they hold the rights. Returns the voice id, a preview clip and what it cost. | asks you first |
| brain_tree | Brand Memory's file list with the completion ring. | reads |
| brain_read | Read one Brand Memory file. | reads |
| brain_write | Write one Brand Memory file (.md paths only) - the agent grounds future posts in it. | asks you first |
| assets_list | The media library: brand uploads and generated media. | reads |
| agents_list | The agent roster (the API calls them strategies). | reads |
| agents_save | Create an agent (no id) or edit one (with id). Setting autoPublishPosts arms publishing without human approval and needs the publish scope; everything else needs write. | asks you first |
| agents_wake | PUBLISH-SCOPED: wake an agent now; it plans and proposes (or with auto-publish, posts) immediately. Returns the conversation it woke into and its web url. | asks you first |
The same account is driveable from a terminal or a script with a scoped API key: npx shapelessai --help, or the REST API documented in the public agent repo. Keys are minted under Settings → API keys.
