Google Search Console integration for Model Context Protocol (MCP)
BetterPost is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Finds timely, verifiable sources across news, social media and the web and turns them into publishable social posts.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http betterpost-mcp https://betterpost.ai/mcp
# 2 — ask your agent for something these tools do
# betterpost_create_project, betterpost_generate_content, betterpost_derive_content and 20 more
BetterPost costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http betterpost-mcp https://betterpost.ai/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
23 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | — |
| audience | string | yes | — |
| description | string | no | — |
| tone | string | no | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| type | string | yes | Output format. 'x' and 'bluesky' are generated as a single post or, more often, a short numbered thread of connected posts (multiple tweets) when there is enough to say — this is the default for those |
| topic | string | no | Steer the piece to a specific topic. Generation only writes from stories actually about it. If none exist yet, it returns topic_unavailable (no charge) with an inScope flag: inScope:true means the top |
| reuse | boolean | no | Reuse the most recent topic. |
| tieIn | string | no | A product/service to weave in. |
| wordLimit | integer | no | — |
Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fromContentId | string | yes | — |
| type | string | yes | — |
| tieIn | string | no | — |
List a project's content (summaries + shareable publicUrl links).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
Fetch one piece of content in full.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| contentId | string | yes | — |
Delete a piece of content and its hosted images.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| contentId | string | yes | — |
Returns your projects, each with its relevance criteria (with ids) that define what counts as on-topic.
No parameter schema on file.
Returns one project with its relevance criteria (each with an id, so a criterion can be targeted for removal via betterpost_update_project).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
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.removeCri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| patch | object | no | Partial update: EVERY field is optional — include only the fields you want to change and omit the rest (an omitted field is left untouched; there are no required patch fields). Passing an empty object |
Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| limit | integer | no | Max sources to return (default 50). |
| offset | integer | no | Number of sources to skip; use the returned nextOffset to page. |
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 s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| value | string | yes | — |
| name | string | no | — |
| type | string | no | Source kind (one of the enum values; defaults to 'autodetect'). 'autodetect' infers the kind from value (a URL): RSS/Atom feeds, web pages, news, Reddit subreddits, X and Bluesky posts/users, Linked |
Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sourceId | string | yes | — |
Returns a project's gathered stories, each with title, url, summary, relevancy, publicationDate, and isManual/isHidden flags. Pass includeHidden to include hidden ones.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| includeHidden | boolean | no | — |
Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| url | string | yes | — |
| title | string | no | — |
| summary | string | no | — |
Hides a story so generation ignores it. Reversible with unhide_story.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| storyId | string | yes | — |
Unhides a previously hidden story so generation can use it again.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| storyId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| type | string | no | — |
| count | integer | no | — |
Your credit balance, freeze state, and recent spend.
No parameter schema on file.
Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| type | string | yes | — |
| wordLimit | integer | no | — |
| additionalInstructions | no | — |
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 `confirm
| Parameter | Type | Required | Notes |
|---|---|---|---|
| projectId | string | yes | — |
| focus | string | no | The topic to get more on (e.g. "League of Legends"). Omit to broaden the whole project. |
| addAsCriteria | boolean | no | Also append an in-scope focus as a standing relevance criterion (out-of-scope, confirmed foci are added automatically). |
| confirmedByUser | boolean | no | Set true once the user has agreed to widen the project to an out-of-scope focus. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | The text to humanize (max 30,000 characters). |
| projectId | string | no | Use this project's tone and writing instructions. |
| type | string | no | Apply this channel's style rules to the rewrite. |
| tone | string | no | Tone override; wins over the project tone. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install BetterPost or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 2.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish BetterPost can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.