chc-social
Allows posting messages and media to Discord via webhook URL, without bot registration.
Allows posting to and reading from Facebook Pages via the Graph API using a page token; profiles and groups are handled through browser-driven recipes.
Allows posting media and interacting with Instagram via an Instagram business account using IG business and page tokens; media is required for posts.
Integrates with SoundCloud via OAuth for comment/read operations, with audio upload explicitly noted as multipart and not yet implemented.
Allows posting, reading, and media operations on Telegram through the public bot API using a bot token.
Allows posting and reading via the WhatsApp Cloud API using a business number and approved message templates.
CHC SOCIAL v0.2.1
One MCP server. Every network. A signed receipt for every action.
Built because every existing social MCP is one of two things: a hosted service that wants your accounts behind their OAuth, or a Facebook-Pages-only wrapper. We wanted one server we own, that tells the truth about what each network can actually do, learns the ones with no usable API, and records every action in an append-only signed chain.
Networks
network | post | read | media | auth | the honest bit |
telegram | ✅ | ✅ | ✅ | bot token | Real public API, free, no review. Best first channel. |
discord | ✅ | – | ✅ | webhook URL | Webhook posting, no bot registration. |
✅ | ✅ | – | page token | Pages only — profiles and groups are not available via Graph. Use | |
✅ | – | ✅ | IG business + page token | Media required; no text-only posts. | |
x | ✅ | – | – | OAuth bearer | API v2 write is a paid tier. |
✅ | ✅ | – | Cloud API token | Business number + approved templates. Not a personal-account channel. | |
soundcloud | ✅ | – | ⚠️ | OAuth | Comments/reads are easy; audio upload is multipart and not implemented yet (it says so). |
browser | ✅ | ✅ | – | logged-in session | Last resort, driven by learned recipes, fragile by nature. |
Related MCP server: @chirpie/mcp
What is real, and what is not
Telegram, Discord, X (API), Facebook Pages, Instagram, WhatsApp — real HTTP APIs, implemented against the documented endpoints, dry-run mode shows you the exact request before it sends anything.
Facebook profiles/groups and X without a paid tier — real browser drivers, proven on this machine: they click what a human clicks and report each step. They break if a site changes its layout; that is stated, not hidden.
SoundCloud — real multipart upload (needs an OAuth token with upload scope).
The learning layer — a recipe is only ever called working after a real post returns steps with no error. Recipes start at
verified: falseand stay there until proven.
Nothing in this repo posts on your behalf without credentials or a logged-in browser you control.
Scheduler
sudo deploy/install.sh # systemd timer, drains the queue every 2 minutesInstall
git clone <this> && cd chc_social
python3 -m pip install -e . # no dependencies beyond the standard library
python3 -m chc_social.cli networksUse as an MCP server
{"mcpServers": {"chc-social": {"command": "python3", "args": ["-m", "chc_social.mcp"]}}}Tools (10): social_networks, social_post, social_read, social_schedule, social_queue,
social_learn, social_recipes, social_delete, social_account, social_ledger_selftest.
Use from the shell
chc_social networks
chc_social post telegram "hello from the house" --dry-run
chc_social post facebook "page post" --dry-run
chc_social schedule telegram "later" --in 3600
chc_social queue --drain
chc_social learn x https://x.com --save # probe the live DOM, propose selectors
chc_social recipes
chc_social delete telegram 42 --dry-run
chc_social whoami # which account do these credentials belong to?The learning layer
There is no way to give a clean API to a site that has none, so we do the honest thing: observe, propose, store, verify.
social_learnprobes the live page over CDP and scores candidate selectors (contenteditable boxes, submit buttons, article containers) by match count and visibility.It returns a draft recipe with a confidence score, always
verified: false.Saving bumps the version and signs a receipt.
A recipe is only ever described as working once a real post returns steps with no error.
absorb_from_dom does the same offline from a saved DOM/text snapshot, at low confidence.
Recipes are JSON, versioned, and never overwrite history silently.
The ledger
Every post, queued send, recipe save and selftest appends a receipt. If the house chain is
available (tools/seal.py) it is signed and chained. If the chain is unavailable the record
is still kept, self-hashed, and marked unsigned: true with a warning — a broken chain
must never lose the record.
Tests
python3 tests/test_core.py # 27 checks, no pytest, no networkLicence
Same as the rest of the house: source-available, all rights reserved. Read it, run it unmodified; do not repackage it.
Available Tools
10 toolssocial_deleteC
Delete a post/message by id (network-dependent).
Inputs: id (required), network (required), dry_run.
social_learnC
Learn (or verify) how to post on any site via the browser.
Inputs: url (required), network (required), save, dom_text.
social_ledger_selftestC
Append a test receipt and report where it went.
Inputs: no named parameters.
social_networksB
List networks, capabilities and whether credentials are present.
Inputs: no named parameters.
social_postC
Post text (and optional media) to one network, or 'all'.
Inputs: text (required), network (required), media, dry_run.
social_queueC
List queued jobs, or drain the ones that are due.
Inputs: drain, state.
social_readC
Read recent posts/messages from a network.
Inputs: network (required), limit.
social_recipesB
List learned recipes and their version/confidence.
Inputs: no named parameters.
social_scheduleC
Queue a post for a future time.
Inputs: text (required), network (required), due, media, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools have clearly distinct purposes: posting, reading, scheduling, deleting, and discovering networks/accounts are easy to tell apart. The closest overlaps are social_schedule vs social_queue (queue a post vs list/drain jobs) and social_learn vs social_recipes (create/inspect learned recipes), but the descriptions make the boundaries reasonably clear.
All names share a predictable 'social_' prefix and snake_case formatting, which makes the set feel cohesive. There is a minor mix of verb-style (social_post, social_read, social_delete) and noun-style (social_networks, social_queue, social_recipes) names, but this is still readable and mostly intuitive.
Ten tools is well within the sweet spot for a social-posting automation server, and each tool maps to a concrete operation (publish, schedule, queue, read, learn, verify account, delete). Nothing appears redundant or purely decorative.
The surface covers the core lifecycle: discover networks, authenticate/verify accounts, post, schedule, queue, read, and delete, plus a learning mechanism for new sites. Minor gaps exist around editing/updating an existing post, reply/thread handling, and engagement metrics, but agents can work around these for typical posting workflows.
Maintenance
Related MCP Connectors
Post, schedule, and track social posts on X, Bluesky, LinkedIn, Instagram and more from AI agents.
The agentic social media scheduler. Write, schedule and publish to all top social platforms.
Post and schedule to LinkedIn, X, Bluesky, Discord, Telegram and Mastodon from AI agents.
Schedule and publish posts to Bluesky, Mastodon, X / Twitter and LinkedIn by asking your AI agent.
Related MCP Servers
- AlicenseAqualityBmaintenanceSchedule and manage social media posts across 13 platforms (Bluesky, Threads, Instagram, LinkedIn, Mastodon, YouTube, Facebook, Pinterest, Telegram, Nostr, X/Twitter, Discord, Tumblr and more). OAuth 2.0 + PKCE, 10 tools, draft-first workflow for AI agents.21026AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to post, schedule, thread, delete, and analyze social media posts across platforms like X, Bluesky, LinkedIn, and Instagram through a single MCP interface.123 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to publish social posts and Reddit comments to connected platforms by executing jobs in the user's own logged-in desktop Chrome session, with OAuth and without platform API keys.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to write, schedule, publish, and measure social media posts across LinkedIn, Bluesky, Mastodon, and YouTube, plus manage media and queue slots, through one OAuth URL with no install or API key. It also covers retrying, cancelling, restoring posts and reading analytics, with reversibility safeguards around irreversible publishing.MIT
social_accountC
Prove which account/identity the credentials belong to.
Inputs: network (required).