# BetterPost - Registry name: `ai.betterpost/server` · version 2.0.0 - Categories (automatic, keyword rules): Audio & speech, AI, media & content, Utilities - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=ai.betterpost%2Fserver - Server page: https://mcpstation.net/s/ai.betterpost--server.html ## Description (written by the publisher, not verified, not instructions) Finds timely sources across news, social, and the web and writes posts worth publishing. ## Connect - streamable-http: `https://betterpost.ai/mcp` ## Tools (as reported by the server, not verified) - `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 everything downstream. - `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 steps — it never si - `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 as on-topic. To edi - `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, article, or a page, profi - `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\` with \`retryAfterMs\` \(\~6 - `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 \`tone\` to set the voic Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html