BetterPost MCP server
online · 100% uptimeai.betterpost/server·v2.0.0Finds timely sources across news, social, and the web and writes posts worth publishing.
0 stars
Reviews
Write oneNobody has reviewed BetterPost yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
BetterPost tools (23, 6 write)
write = sends, deletes, buys or postsbetterpost_add_sourceFreeAdds 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, article, or a page, profile, or post on a supported platform) and leave `type` as autodetect, or create a recurring keyword search by setting `value` to the search terms and `type` to a search kind (see `type`).
betterpost_add_storyFreeManually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.
betterpost_create_projectwrite actionFreeCreate 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 everything downstream.
betterpost_delete_contentwrite actionFreeDelete a piece of content and its hosted images.
betterpost_delete_projectwrite actionFreePermanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.
betterpost_derive_contentFreeTransform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.
betterpost_expand_coverageFreeBroadens 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` with `retryAfterMs` (~60s), meaning the newly gathered stories are still landing. An out-of-scope `focus` requires `confirmedByUser: true`; without it, it returns a `confirmation_required` error. No credits are charged.
betterpost_generate_contentFreeGenerate 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 steps — it never silently writes an off-topic piece.
betterpost_get_contentFreeFetch one piece of content in full.
betterpost_get_projectFreeReturns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project).
betterpost_get_settingsFreeReturns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).
betterpost_get_usageFreeYour credit balance, freeze state, and recent spend.
betterpost_hide_storyFreeHides a story so generation ignores it. Reversible with unhide_story.
betterpost_humanizeFreeRewrite 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 `tone` to set the voice directly.
betterpost_list_contentFreeList a project's content (summaries + shareable `publicUrl` links).
betterpost_list_projectsFreeReturns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.
betterpost_list_sourcesFreeReturns 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_list_storiesFreeReturns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones.
betterpost_remove_sourcewrite actionFreeRemoves a source from a project. Its already-gathered stories stay; the source is no longer fetched.
betterpost_suggest_topicsFreeClusters 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_unhide_storyFreeUnhides a previously hidden story so generation can use it again.
betterpost_update_projectwrite actionFreeUpdates 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 as on-topic. To edit criteria incrementally instead, pass `patch.addCriteria` (texts to append) and/or `patch.removeCriteria` (criterion ids from get_project/list_projects). Dates default to US Eastern unless a `timezone` (an IANA name like "America/New_York") is set.
betterpost_update_settingswrite actionFreePatches 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.
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 845ms20/20
- Tool poisoning23 tool descriptions checked15/15
- Auth qualityopen endpoint exposes 6 write-action tools with no auth3/15
- Maintenancelast push 45 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year; website matches verified namespace10/10
Findings (1)
- highWrite-action tools reachable without authentication
auth.open-write
How BetterPost compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 80/100
- higher than 60% of 48,255 servers
- Tools
- 23
- the typical server has 7
- Tools that change things
- 26%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote server answers 100%
- Response time
- 140 ms
- faster than 75% of 30,031 servers
What its tools let an agent do: 17 read · 6 change
Install BetterPost in Claude Code, Cursor or VS Code
claude mcp add --transport http server https://betterpost.ai/mcp
What the publisher says
From the BetterPost repository's README, as published. We do not edit it. Read it on GitHub
BetterPost — agent plugin and skill
Write timely, well-sourced content — newsletters, blog posts, LinkedIn posts, tweets, and Bluesky posts — grounded in current sources across news, social, and the open web. BetterPost finds recent sources relevant to your product and audience, ranks them by relevance, and writes human-sounding content with real citations and publication dates.
Works in the agents you already use, through a single MCP server. Free to start — sign in with your BetterPost account to get free credits.
Install
Any agent
npx skills add betterpost/betterpost-pluginThis installs the betterpost skill into whichever agent you use. It does not configure the MCP server — the skill walks your agent through registering https://betterpost.ai/mcp the first time you ask for content.
Claude Code
/plugin marketplace add betterpost/betterpost-plugin
/plugin install betterpost@betterpostThis installs the skill and registers the MCP server for you.
Either way, ask your agent to write a newsletter or post about what's happening in your space. It sets up a project and generates content grounded in current sources.
What's in here
.pi/, gemini-extension.json — manifests for the other agents.
- skills/betterpost/SKILL.md — the skill your agent invokes.
- .mcp.json — registers the hosted BetterPost MCP server.
- .claude-plugin/ — the plugin manifest and self-listed marketplace.
- .codex-plugin/, .cursor-plugin/, .kimi-plugin/, .agents/, .opencode/,
Using the server directly
Any MCP client can connect to https://betterpost.ai (Streamable HTTP). On first use, the client prompts you to sign in with your BetterPost account (OAuth 2.1) and handles the session for you — there's no token to copy or persist. New accounts get free credits on sign-up.
Links
- Website: https://betterpost.ai
- Contact: hello@betterpost.ai
License
MIT
Nothing above is checked by us. What we check is on the safety report.
BetterPost: common questions
- Is BetterPost MCP server safe?
- Mostly: it is graded B (80/100). Read the BetterPost safety report
- How do I install BetterPost?
- It runs remotely at betterpost.ai. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does BetterPost need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is BetterPost maintained?
- The last commit was 84 days ago (2026-08-12). The latest release is v2.0.0.
- Is BetterPost up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- How does BetterPost compare with other MCP servers?
- safety score 80/100 (higher than 60% of 48,255 servers); tools 23 (the typical server has 7); tools that change things 26% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.