ZBS Index What actually exists in applied AI, with the source next to it

mcp server

BetterPost

Finds timely sources across news, social, and the web and writes posts worth publishing.

Description as published by the maintainer. Source

  • version 2.0.0
  • active

active — Most recent push to the repository was 2026-07-27.

What this server can do

23 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.

betterpost_add_source(name, type, value, projectId)
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, 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`). Required: projectId, value.
betterpost_add_story(url, title, summary, projectId)
Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it. Required: projectId, url.
betterpost_create_project(tone, title, audience, description)
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. Required: title, audience.
betterpost_delete_content(contentId)
Delete a piece of content and its hosted images. Required: contentId.
betterpost_delete_project(projectId)
Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone. Required: projectId.
betterpost_derive_content(type, tieIn, fromContentId)
Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic. Required: fromContentId, type.
betterpost_expand_coverage(focus, projectId, addAsCriteria, confirmedByUser)
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` (~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. Required: projectId.
betterpost_generate_content(type, reuse, tieIn, topic, projectId, wordLimit)
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 silently writes an off-topic piece. Required: projectId, type.
betterpost_get_content(contentId)
Fetch one piece of content in full. Required: contentId.
betterpost_get_project(projectId)
Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project). Required: projectId.
betterpost_get_settings(projectId)
Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel). Required: projectId.
betterpost_get_usage
Your credit balance, freeze state, and recent spend.
betterpost_hide_story(storyId)
Hides a story so generation ignores it. Reversible with unhide_story. Required: storyId.
betterpost_humanize(text, tone, type, projectId)
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 voice directly. Required: text.
betterpost_list_content(projectId)
List a project's content (summaries + shareable `publicUrl` links). Required: projectId.
betterpost_list_projects
Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.
betterpost_list_sources(limit, offset, projectId)
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. Required: projectId.
betterpost_list_stories(projectId, includeHidden)
Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones. Required: projectId.
betterpost_remove_source(sourceId)
Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched. Required: sourceId.
betterpost_suggest_topics(type, count, projectId)
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. Required: projectId.
betterpost_unhide_story(storyId)
Unhides a previously hidden story so generation can use it again. Required: storyId.
betterpost_update_project(patch, projectId)
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 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. Required: projectId.
betterpost_update_settings(type, projectId, wordLimit, additionalInstructions)
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. Required: projectId, type.

Last successful function declaration observed on . Source: https://betterpost.ai/mcp. We list what the server declared; we do not call any of these functions.

Endpoint status observed on . Source: https://betterpost.ai/mcp.

Signals

These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.

Signal Value What it measures Window Observed Source
GitHub stars 0 Number of GitHub accounts that bookmarked this repository since it was created. It is a bookmark count, not installs, not active users and not quality. cumulative, all time GitHub
Last commit 2026-07-27 Date of the most recent push to any branch. This is the strongest cheap indicator of whether the project is still maintained. point in time GitHub
Open issues 1 Open issues plus open pull requests, as GitHub counts them together. A high number can mean an active project or an abandoned one. as of fetch GitHub
Latest published version 2.0.0 Latest version string the maintainer published to the registry. as of fetch Model Context Protocol
Registry record last updated 2026-07-08 When the registry record was last updated by its maintainer. point in time Model Context Protocol
License MIT Licence GitHub detected in the repository. Detection can be wrong; the LICENSE file is authoritative. as of fetch GitHub
First listed in the MCP Registry 2026-07-08 Date this server was first published to the official MCP Registry. Not a usage or quality measure. point in time Model Context Protocol
repository status active The repository exists on GitHub and is not archived. This says nothing about how recently it was worked on. as of fetch GitHub
mcp tools declared 23 tools Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. as of probe betterpost.ai
mcp endpoint status ok The server listed 23 functions when asked. as of probe betterpost.ai

Where to get it

This record as data

Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.

GET /api/v1/entries/mcp_server.json

Sources

  1. betterpost/betterpost-plugin on GitHub — GitHub, observed , trust tier 3.
  2. Tools declared by the MCP server at https://betterpost.ai/mcp — betterpost.ai, observed , trust tier 1.
  3. Official MCP Registry — Model Context Protocol, observed , trust tier 1.