# BetterPost Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## BetterPost

Find timely sources and generate social posts, newsletters, and web content worth publishing.

- Record: https://musedirectory.ai/connector/betterpost
- Category: Marketing & Ads
- Developer: BetterPost (https://betterpost.ai)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 1323ms, checked 2026-09-28T09:46:07Z
- Endpoint: https://betterpost.ai/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-09-24T00:10:46Z)
- Source: Found in the official MCP Registry (ai.betterpost/server) https://registry.modelcontextprotocol.io/v0/servers?search=ai.betterpost%2Fserver

Discovers relevant news, social, and web sources for your topic, then generates posts for X, Bluesky, newsletters, and other formats. Lets you manage projects, curate stories, and rewrite content in different voices. Charges credits per generation.

Example request: "Generate a Twitter thread about recent AI developments for my tech newsletter project."

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use BetterPost to help me. It is a free service with an MCP server at https://betterpost.ai/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- betterpost_create_project: Create a content project. Slow, one-shot: infers config (criteria, industry, tone), discovers sources, and gathers/ranks an initial set of timely stories. Best called after the inferred audience, description, and tone have been confirmed with the user, since the config shapes eve
- betterpost_generate_content: Generate a new piece of content for a project from its timely, relevant stories. Fast in steady state. Charges credits on success only. If you pass a `topic` the project has no stories about, this returns a `topic_unavailable` error (no charge) carrying an `inScope` flag and next
- betterpost_derive_content: Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.
- betterpost_list_content: List a project's content (summaries + shareable `publicUrl` links).
- betterpost_get_content: Fetch one piece of content in full.
- betterpost_delete_content: Delete a piece of content and its hosted images.
- betterpost_list_projects: Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.
- betterpost_get_project: Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project).
- betterpost_update_project: Updates a project's title, audience, description, tone, freshness window, timezone, or relevance criteria, and returns the updated project with its criteria. Changing title/audience/description re-derives the relevance criteria (replace-all), which broadens or narrows what counts
- betterpost_delete_project: Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.
- betterpost_list_sources: Returns one slimmed page of a project's sources plus project-wide `total` and `counts` (ok/failing/disabled/pending, and byType). Page with `limit` (default 50) and `offset`, following the returned `nextOffset` until it is null.
- betterpost_add_source: Adds a source to a project and fetches it immediately (bounded by a few seconds), returning `storiesAdded` so the next generate_content can use it; if it is still fetching it returns `fetched:false` with a note. Doubles as manual source import: paste any URL (RSS/Atom feed, artic
- betterpost_remove_source: Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.
- betterpost_list_stories: Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones.
- betterpost_add_story: Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.
- betterpost_hide_story: Hides a story so generation ignores it. Reversible with unhide_story.
- betterpost_unhide_story: Unhides a previously hidden story so generation can use it again.
- betterpost_suggest_topics: Clusters a project's current stories into a few candidate angles — each with a label, how many stories back it, and example headlines — and warms the project (gathers and ranks fresh stories) in the process. Returns topics you can offer the user before generate_content.
- betterpost_get_usage: Your credit balance, freeze state, and recent spend.
- betterpost_get_settings: Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).
- betterpost_update_settings: Patches one content type's wordLimit and/or additionalInstructions (free-form writing guidance for that type; pass an empty string to clear it). Project-wide preferences (title/audience/tone, project-wide additionalInstructions) live on betterpost_update_project.
- betterpost_expand_coverage: Broadens a project's coverage: expands the relevance criteria (when needed), finds more sources across news, the web, and the relevant social platforms, and fetches them inline. Applies on a `topic_unavailable`, `no_stories`, or low-coverage signal. May return `warming: true` wit
- betterpost_humanize: Rewrite existing text into BetterPost's readable, human voice. Preserves the meaning, facts, links, and format; returns the rewritten text plus short notes on what changed. Pass `projectId` to write in that project's tone and instructions, `type` to apply a channel's style, or `t

Screening checks:
- MCP handshake: pass (Answered in 399ms)
- Domain against threat feeds (Cloudflare security DNS): pass (betterpost.ai not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (23 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (Domain registered 454 days ago)
- AI review of purpose and tool behavior: pass (No concerns)
