Skip to content
ShapelessAI← Back
Interfaces

MCP server

The hosted MCP server at shapelessai.com/mcp, the tools it serves, and how each agent host adds it.

Verified
View as Markdown
Remote MCP server URL
https://shapelessai.com/mcp

The hosted MCP server is https://shapelessai.com/mcp. Add that URL to any host that speaks remote MCP and it opens a Shapeless tab to sign in and allow. OAuth, no API key, revocable by the human. A client that cannot open a browser (the Agent SDK, a CI job, a self-hosted agent) sends an API key from Settings → API keys as Authorization: Bearer slk_... to the same URL instead.

It is the same operations as the API and the CLI, discovered as tools - so an agent host learns the surface instead of reading this page.

Add it

HostHow to add itSteps with screenshots
ClaudeSettings → Connectors → Add custom connector → paste the URL → Connect./connect/claude
ChatGPTOpen the ShapelessAI plugin in ChatGPT (chatgpt.com/plugins → search ShapelessAI) → add it → sign in. By hand: Developer mode on (Settings → Security and login) → chatgpt.com/plugins → + → paste the URL, OAuth./connect/chatgpt
Claude Codeclaude mcp add --transport http --scope user shapeless https://shapelessai.com/mcp, then /mcp → Authenticate./connect/claude-code
CursorOne-click install link, or add the URL to ~/.cursor/mcp.json → Needs login → sign in./connect/cursor
Codexcodex mcp add shapeless --url https://shapelessai.com/mcp, then codex mcp login shapeless./connect/codex
VS CodeOne-click install link, or MCP: Add Server → HTTP → paste the URL → start it and sign in./connect/vscode
Gemini CLIgemini mcp add --transport http shapeless https://shapelessai.com/mcp, then /mcp auth shapeless./connect/gemini-cli
AntigravityAdd "shapeless": { "serverUrl": "https://shapelessai.com/mcp" } under mcpServers in ~/.gemini/config/mcp_config.json, then Authenticate./connect/antigravity
Grokgrok.com/connectors, New Connector, Custom, paste https://shapelessai.com/mcp, sign in./connect/grok
Geminigemini.google.com, Settings, Connected Apps, Add a custom app, paste https://shapelessai.com/mcp./connect/gemini
PerplexityAccount settings, Connectors, + Custom connector, Remote, paste https://shapelessai.com/mcp, OAuth, Streamable HTTP./connect/perplexity
MuseAsk Muse to create a custom connector to https://shapelessai.com/mcp and follow its sign-in steps./connect/muse
OpenClawopenclaw mcp add shapeless --url https://shapelessai.com/mcp --transport streamable-http --auth oauth, then openclaw mcp login shapeless./connect/openclaw
Hermes Agenthermes mcp add shapeless --url https://shapelessai.com/mcp --auth oauth, then hermes mcp login shapeless./connect/hermes

Any other host that speaks remote MCP takes the same URL: https://shapelessai.com/mcp.

Every step above was read from the vendor's own documentation; the dated sources are on shapelessai.com/connect.

The handshake, for an agent adding it itself

  • Transport: streamable HTTP at https://shapelessai.com/mcp
  • Auth: OAuth 2.1, dynamic client registration, PKCE
  • Protected-resource metadata: https://shapelessai.com/.well-known/oauth-protected-resource/mcp
  • Scopes: read, write, publish, offline_access
  • Instructions: the initialize result carries a short brief for the model (what Shapeless is for, where to start, the approval rule, that the live docs are at /llms-full.txt and the playbook at /skill.md), so a host knows when to reach for these tools before it has read a page. me answers next: the moves worth making on this account now.

An unauthenticated call answers 401 with WWW-Authenticate: Bearer resource_metadata="..." pointing at that document. The server is stateless - one server per request, no session id - so nothing breaks when the next request lands on another instance.

The tools

Every tool's description names the scope its credential needs. Tools that put content out say so in capitals and carry a destructive annotation, so a host asks the human first. Read-only tools are annotated read-only and run freely.

ToolScopeWhat it does
mereadWho am I, plan, credit balance. Call it first to check the credential.
connections_listreadThe connected accounts and their ids, plus a clickable connect link per platform not yet connected.
connections_linkwriteThe one URL the human opens to connect a social account on a platform; the OAuth click stays theirs.
tools_listreadThe live catalog of the studio tools below, each with its input schema and default price.
capabilities_listnoneEverything Shapeless can do, live or planned, with the route and tool for each.
capabilities_wantanyAsk to be told when a planned capability ships. Ask the human first.
instagram_audio_searchreadSounds an Instagram account may attach to a Reel (Meta's Audio API): search by title or artist, empty for trending. Pass an id as posts_create audio.audioId. Needs the account connected through Facebook Login; otherwise 409 with the connect link.
platforms_listnoneLimits, media rules, whether a title is required, first-comment support and the settings schema per platform. Read it before posts_create.
posts_createpublishPUBLISHES. Put a post you wrote on one connected account: now, at a time, or in the account's next free queue slot.
posts_listreadThe queue: proposed, scheduled, published. sort: "views" ranks your best posts across all history (platform, connectionId, minViews, since); fresh re-reads stale numbers first.
posts_getreadOne post's live state, what it was made from, how it did.
posts_approvepublishPUBLISHES. Proposals to the schedule.
posts_dismisswriteReject proposals. Nothing goes out.
posts_publishpublishPUBLISHES. Push a queued post out now.
jobs_createwriteStart a durable run from a goal. referenceId + mode work from one of your references.
jobs_list / jobs_get / jobs_brief / jobs_tailreadFind, read, digest and follow runs.
jobs_continuewriteAnother turn on a job - resumes a stuck one.
jobs_runwritePress Run on a job's waiting plan, the approval click a headless caller has nobody to make. Drafts still land as proposals.
jobs_stopwriteStop a running job.
panel_open / panel_update / panel_closewriteOpen, change or close a tab on the panel beside the chat (a calendar, search hits, a teleprompter, media, a graph node, a plan as a flow graph of nodes with their costs, your own HTML).
panel_askwritePut a question with options on the panel and wait up to 25 seconds for the person's press.
panel_watchreadRead the panel, or wait up to 25 seconds for it to change: every tab and every answered question.
characters_listreadThe actor roster and how each voice was made.
characters_voicewriteDesign or clone a voice. Spends credit.
brain_tree / brain_readreadBrand Memory's file tree and one file.
brain_onboardingreadWhat is still open in Brand Memory, as questions with hints; answer with brain_write.
brain_writewriteEdit Brand Memory.
assets_listreadThe asset library.
agents_listreadThe standing agents.
agents_savewrite, or publish when armed to autopublishCreate or edit one.
agents_wakepublishPUBLISHES. Run an agent now.
references_listreadYour reference sets: the creators, competitors and peers you work from, with member ids.
references_addwriteAdd a person by handle and platform or profile URL, as creator, competitor or peer; suggestionId accepts a suggestion.
references_removewriteRemove a member (memberId, with a reason) or dismiss a suggestion (suggestionId).
references_suggestreadPeople we suggest, each with the reasons behind it.
references_browsereadSearch your set and how many other workspaces picked a handle (counts of 3 or more, never who). Counted per day by plan.
identity_searchreadPeople, accounts and organizations Shapeless Graph already knows, by name or handle. Free.
identity_nodereadOne node in full: fields, edges with evidence, pulls, freshness, metric history.
identity_peoplereadEveryone in the graph, sorted and filtered; scope: "mine" is what you track.
identity_similarreadPeople like one person, each with a why.
identity_libraryreadPosts held for a person or an account, sorted by views or multiplier.
identity_trackedread, write to changeWhat you track (me, competitor, reference, watch); node + role tracks one, remove stops.
identity_estimatereadWhat a pull would cost before it runs, and what is already held.
identity_resolvewriteSPENDS CREDIT. Resolve a handle, profile URL or domain into a person or organization.
identity_expandwriteSPENDS CREDIT. Pull one more ring: profile, posts, sponsors, ads, creators, metrics, labels. See Identity.

Studio tools

Every tool our own studio agent holds is also its own MCP tool, under the same name, with the engine's JSON Schema as its input: images, AI video, video edits, carousels, speech, subtitles, web pages, X and news research. Each is POST /api/tools/{name} in tool clothing and takes the write scope. A call holds budgetUsd of credit (default 2, max 10) while it runs and settles at what it really cost; one with a price spends credit and is annotated destructive, so the host asks first. Every one answers {tool, output, media: [{key, url}], chargedUsd}, where media lists each file it made; put a key in posts_create's mediaKeys to publish it.

ToolWhat it doesDefault callRuns
generate_imageGenerate an image~$0.016spends
generate_footageGenerate AI video~$0.18spends
clone_reelRemake a reel with the account owner~$9.3spends, web
edit_footageEdit a videofreefiles media
render_thumbnailRender a video thumbnailfreefiles media
demo_pageRecord a product demofreefiles media, web
render_carouselRender a carousel~$0.02spends
speakTurn text into speech~$0.03spends
caption_fileMake a subtitle filefreefiles media
plan_musicGenerate a music bed~$0.06spends
write_songWrite a song with vocals~$0.08spends
probe_mediaInspect a video or audio filefreereads
measure_reelMeasure a reference reel~$0.053spends, web
find_photoFind a real photofreefiles media, web
find_footageFind stock footagefreefiles media, web
find_faceFind a person's photo~$0.007files media, web
brand_markFind a brand's logo~$0.007files media, web
web_searchSearch the web~$0.015spends, web
read_pageRead a web page~$0.006reads, web
screenshot_pageScreenshot a web pagefreefiles media, web
record_pageFilm a web pagefreefiles media, web
capture_tweetCapture a post from Xfreefiles media, web
list_page_assetsList a page's images and videosfreereads, web
inspect_page_styleRead a site's brand stylefreereads, web
fetch_assetImport a file from a URLfreefiles media, web
x_pulseAsk what X is saying~$0.25spends, web
news_searchSearch the news~$0.01spends, web
concept_searchSearch by meaning~$0.007reads, web
community_hotWhat a community upvotesfreereads, web
current_pulseMeasure talk on X~$0.06spends, web
related_trendsFind related trends~$0.00001reads
find_evidenceFind research evidence~$0.001reads, web
reference_searchSearch posts that performed~$0.00001reads
reference_readRead a post that performedfreereads
linkedin_org_lookupFind a LinkedIn company tagfreereads

The prices are a default call's engine cost before the plan's margin; premium image quality and longer or voiced footage cost more. tools_list reads the same catalog live.

posts_create is POST /api/posts in tool clothing: connectionId, text (the route's postText), mediaKeys, title (the route's documentTitle; YouTube requires one), scheduledAt or queue: true, settings, firstComment, audio (an Instagram Reel's sound, from instagram_audio_search). Read platforms_list first - it carries the limits and the settingsSchema to fill. On the Free plan the eleventh post for one UTC day answers 402 free_daily_cap, which names the day and when it resets. See Posts.

References

A reference set is the people an account works from: creator, competitor, or peer (creators like me). Add someone with references_add ({handle, platform} or {url}); adding the same person twice answers the member already there. Then start a job from them: jobs_create {goal, referenceId: <member id>, mode: "clone" | "format" | "inspiration"}. The post it makes carries inspiration {kind: "reference-post", memberId, mode}, so its result can be read against the account's own baseline and against posts made from Brand Memory alone.

references_suggest returns {suggestionId, platform, handle, kind, reasons: [{code, evidence}], rank}; show the reasons to the human, then accept with references_add {suggestionId} or dismiss with references_remove {suggestionId}. The list is empty, with a note, until the suggestion job has run for the account.

Picks are private to the account: nobody is told they were picked, and references_browse shows other workspaces only as a count of how many picked a handle, and only at 3 or more. With platform and an exact handle it also answers what those workspaces picked beside it. Browsing is counted per UTC day: Free 5, Spark 50, Growth 500, Studio unlimited. The answer says what is left (remaining); past the limit it is 402 reference_browse_limit with the reset time and the upgrade links.

Two tools exist only on the local stdio server, because they read your disk: assets_upload, brain_import, and the files argument on a job message. Run it with shapeless mcp - see CLI.

Eight Shapeless Directory tools need no key and no account: directory_requirements, directory_preview, directory_submit, directory_verify, directory_stats, directory_search, directory_get and directory_alternatives. They are served by shapeless mcp and alone on the keyless endpoint https://shapelessai.com/mcp/ai-tools, never on this OAuth server. See Shapeless Directory.

Work passes both ways

  • Every job result carries url - https://shapelessai.com/studio/c/<id> - the conversation the human opens. jobs_create, jobs_list, jobs_get and agents_wake all decorate.
  • jobs_brief is the token-compact read before replying: the last 30 messages clipped, reasoning and tool-activity dropped, an artifact inventory, post counts per queue status. Deterministic, no model in the loop.
  • jobs_list pages 200 at a time with a nextCursor the tool takes back as before.
  • jobs_tail replays from a cursor and follows live, returning when the run ends, 60 seconds pass or 200 events arrive. A run with no stream answers {live: false} rather than erroring.

The panel: show the person things, and ask them

On the Ask page the chat has a panel beside it: a read-only document of tabs the person looks at while the conversation goes on. The browser draws it; the chat's own agent and you, from a terminal, write it, and both see the same panel because it is stored with the conversation.

  • No id needed. Leave conversation_id out and the panel tools use the conversation the person opened last in the browser, the one they are most likely looking at.
  • panel_open takes kind, title and the kind's fields flat: calendar (ids, highlight, mode), search (query, hits, groupBy, orderBy), prompter (sections), media (items), node (node), performance, agent, people, brain, plan, choices, and custom (html, drawn in a sandboxed frame), and flow (nodes, edges, estimateUsd, approve: a plan as a graph, one node per choice with its cost and what it was built from). The same id replaces a tab in place.
  • panel_ask is the one way the person answers you there: two or more options, one press. With wait_seconds it returns picked: {optionId, label, at}; null means not yet, so keep waiting with panel_watch and after_rev.
  • panel_watch with after_rev and wait_seconds holds up to 25 seconds and returns the moment the panel changes. Its text is one plain line per tab, its picks every answer.

The same panel is plain HTTP: GET /api/conversations/{id}/panel (?after=<rev>&wait=<s>), POST /api/conversations/{id}/panel with {ops: [...]} (an edit op there is the person's hand edit of one flow node: {id, node, patch {text?, sub?, media?}}), and GET /api/conversations/current/panel. From a shell: shapeless panel show | open | update | close | ask | watch.

There is one prompt, continue (argument: id), which a host like Claude Code surfaces as a slash command: it loads that conversation's brief and tells the agent to reply into the same thread with jobs_continue.

Claude Code plugin

The public repo is also a plugin marketplace. The plugin wires up the hosted server and ships a skill that teaches Claude the ropes:

/plugin marketplace add FirstClassTree/shapelessai
/plugin install shapeless@shapeless

Then run /mcp, pick shapeless and choose Authenticate.

Other servers

We keep a measured survey of every MCP server that posts to social networks, ours included, at shapelessai.com/best-social-media-mcp-servers: endpoint, auth, which tools publish, networks, and the free tier's honest limit, each read from the vendor's own page.

Questions

Is there a free social media MCP server?

Yes, this one. https://shapelessai.com/mcp is on the Free plan: OAuth, no API key, 10 posts a day across nine networks, no card. The same tools run on every paid plan.

Can Claude post to social media?

Through a server that exposes a publishing tool, yes. Add this server as a custom connector, connect an account under Accounts, and ask. posts_create publishes or schedules; it is annotated destructive, so Claude asks you before it runs.

Does it work in ChatGPT, Cursor and Codex too?

Yes. In ChatGPT, Shapeless is a published plugin: open the Shapeless plugin while signed in, add it and sign in. Any other MCP host that speaks streamable HTTP with OAuth 2.1 can add the server by its URL; the host table above lists the ones we have verified step by step. Claude Code also has a plugin, and the shapelessai CLI runs the same tools over stdio for hosts that cannot reach a hosted server.

What happens when the free plan's daily cap is hit?

posts_create answers with the free_daily_cap error, the limit and the time it resets, so an agent can wait rather than retry blindly. Nothing is dropped silently. A post that failed still holds its slot on that day, so retry it with posts_publish on the same id rather than calling posts_create again.