verified: stdio · pending verification: connector over OAuth
Postdom as a Claude Code MCP server
Postdom runs as a Claude Code MCP server over stdio, and that is the transport verified here against the published @postdom/mcp@0.3.0 package. Once connected, Claude reads workspace state and can submit a plan to publish supplied finished video to TikTok, Instagram Reels, YouTube Shorts, LinkedIn, Facebook Reels, X, Snapchat Spotlight, Threads and Bluesky. Claude Desktop can read the same stdio configuration from its own file. The separate claude.ai connector route, which uses the hosted endpoint and OAuth instead, is pending verification.
Both reach the same workspace. They are not equally proven, so they are not described as though they were.
Verified · to the last step before your key
Claude Code and Claude Desktop · stdio
Verified against the published @postdom/mcp@0.3.0 package: install, startup, MCP initialize, discovery of all 13 tools, and a live request that surfaced a clean authorization error inside the tool result rather than crashing. The only untested step is substituting a real workspace key, which is yours to hold.
Pending verification · server live, connector flow not yet exercised
claude.ai · connector over OAuth
The server side is live: the endpoint answers with a correct authorization challenge and publishes the discovery documents an OAuth connector follows. The connector flow itself — adding the server, granting consent, and seeing the grant appear in your authorized clients — is pending verification, so this page does not claim it works end to end.
Endpoint: https://api.postdom.com/mcp
How do you add the Postdom Claude Code MCP server?
The configuration below has the shape Postdom Accounts generates when you create a workspace key. Substitute the server URL and key it shows you; both appear once.
The package is @postdom/mcp@0.3.0 and requires Node.js 22 or newer. The workspace key lives in this file, never in a chat message.
Where the file goes
Project.mcp.json
The repository root, checked in, so everyone working on the project gets the same server. This is what --scope project writes.
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Desktop reads the same mcpServers block from its own file. This is still the stdio transport, so it is the verified path rather than the connector route.
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
The same block, same transport. Reachable from Settings, then Developer, then Edit Config.
Or register it from the command line
Claude Code can add the same server without editing a file. The form below is adapted from Claude Code's MCP documentation — the shape is theirs, the values are ours — and it is written out here rather than run.
Without a --scope flag, claude mcp add uses local scope: private to you and active only in the current project. Local and user scope are both written into Claude Code's own ~/.claude.json — local under the current project's entry, user at the top level — so let the command manage that file rather than editing it by hand. Use --scope user to make the server available across all your projects, and --scope project to write the .mcp.json above instead.
Then run claude mcp list to confirm postdom is registered before you depend on it.
1
Create the workspace key in Postdom Accounts
A human creates the workspace and the key. Postdom shows the exact configuration once, at the moment the key is created. The key belongs in your Claude client configuration file, never in a chat message and never in a prompt.
2
Put the configuration where Claude reads it
Save the block as .mcp.json in your repository root to share the server with the project. Claude Desktop reads the same block from its own config file, whose path differs by operating system. To install it for yourself across every project instead, run the command above with --scope user, because that scope lives inside Claude Code's own managed configuration rather than a file you edit. The package is @postdom/mcp@0.3.0 and it needs Node.js 22 or newer.
3
Or add it from the command line
Claude Code can register the same server without editing a file, using claude mcp add with the environment values passed as flags. As printed above, the command writes project scope; swap in --scope user for every project on your machine. Pass one or the other explicitly, because without a scope flag the server lands at local scope, which is neither the .mcp.json nor the Desktop file above. Run claude mcp list afterwards to confirm postdom is registered before you rely on it.
4
Put the operating brief where Claude will read it
Add the operating brief to CLAUDE.md so the instructions load with the project rather than depending on someone remembering to paste them. The brief is an operating brief, not a setup prompt: copying it connects nothing on its own.
5
Verify with one call
Ask Claude to call get_workspace_status. A successful response confirms the connection and shows setup progress, connected accounts and policy. If the tools are missing, stop and restore the connection rather than working around it.
6
Keep approval and reconciliation with a human
The human owns the account, the audience, consent, disclosures and the approval itself. Claude can prepare a bounded request and read the result. It cannot approve its own plan, widen policy, or turn its own confidence into permission to publish.
What Claude can call
The connection exposes 13 tools. This list is checked against the tool registrations in the MCP server's own source, and the package version below is pinned to the one that ships, so the two cannot drift apart without failing a build. Each tool links to its own reference.
Verified against the published @postdom/mcp@0.3.0 package by listing the tools the server registers and calling one of them. Scope of that check: the connection and the error surface, not an authenticated publish.
Postdom publishes supplied finished video to these destinations. It does not generate video, add networks it has not shipped, or make every feature inside a destination available.
For the workflow itself once you are connected — what to ask for, and what to check afterwards — read publishing from Claude Code. The instructions Claude loads are the operating brief.
When it does not connect
Three failures account for most of them, and each has a different cause worth separating before you start changing the configuration.
The server does not appear after adding it
Restart Claude, then run `claude mcp list` to see whether postdom is registered at all. A server that is registered but failing shows up here, which separates a configuration problem from a connection problem.
The tools are missing from the session
Check the Node.js version first: the package requires Node.js 22 or newer, and an older runtime fails before any tool is registered. If Node is current, confirm the configuration is in the scope you expected — a project `.mcp.json` does not apply outside that project.
Every call returns an authorization error
The server is reachable and the key is being rejected. Confirm the workspace key was copied whole, and that it is in the configuration file rather than pasted into a chat message. Postdom shows the key once, so regenerate it rather than guessing at a truncated copy.
What a successful call does not prove
This is the part most integrations leave out, and it is the part that decides whether you can trust your own logs.
A response is not a publication
An accepted or requires_approval response is not provider publication. A scheduled state is not publication either. Keep the returned post ID and read that same post through to a terminal per-destination outcome before you call it published.
A failure is not proof of nothing happening
A failed or partial state does not prove a destination never published, so it is not a licence to retry automatically. Reconcile each destination first; retrying a request where one destination already succeeded is how duplicates get made.
A missing metric is not a zero
When a platform does not report a value, Postdom keeps it unavailable with its reason attached and leaves it out of aggregates. null is not zero, and treating it as zero silently understates everything it touches.
An agent cannot approve itself
Claude can prepare a bounded request and interpret the result. The human owns credentials, connected accounts, policy, consent, audience and disclosures. Approval is enforced on the exact version and request that will be sent.
Questions before you connect Claude
Is Postdom a Claude MCP server?
Yes. Postdom publishes an MCP server exposing 13 tools. Claude Code connects to it over stdio using the published @postdom/mcp@0.3.0 package and a workspace key you create. That path is verified here to the last step before a real key.
Does connecting work with claude.ai or Claude Desktop?
Claude Desktop can read the same stdio configuration from its own file, which is the transport verified here. The separate claude.ai connector route uses the hosted endpoint over OAuth: that endpoint is live and answers the authorization challenge correctly, but the connector flow itself is pending verification, so this page states the server is ready rather than claiming the end-to-end experience has been confirmed.
What can Claude actually do once connected?
It can read workspace status, accounts, the brief and the digest; submit and read a plan; publish supplied finished video; and read publish outcomes and performance. Postdom does not generate video. You supply the finished file, and a human approves what goes out.
Does a successful publish call mean the video is live?
No. accepted, requires_approval and scheduled are workflow states, not provider publication. Keep the returned Postdom post ID and read that same post through to a terminal per-destination outcome before treating any destination as published, and before retrying anything.
What happens to metrics a platform does not report?
They stay unavailable, with the reason attached. Postdom does not substitute a zero for a missing observation: null is not zero, and an unavailable metric is excluded from aggregates rather than quietly dragging them down.
How is this different from the Claude Code page?
This page is the connection: transports, configuration, tools and verification. The Claude Code page covers the workflow itself once the connection exists. If you are deciding how to wire Postdom into Claude, start here.