BetterPost
(unclaimed - source: registry-official · publisher: ai.betterpost) · languages: en · regions: global · github · more from ai.betterpost →
Finds timely sources across news, social, and the web and writes posts worth publishing. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_029da1de56/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_029da1de56/ask -d '{"tool":"betterpost_create_project","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_029da1de56 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://betterpost.ai/mcp- Pricing
- not listed
- Access
- OAuth (Bearer) — no on-chain wallet
- Links
- homepage · repository
Live capabilities — 23 tool(s) it actually exposes · betterpost v0.1.0 (measured from a real MCP handshake, not self-reported)
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 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` thbetterpost_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. Chbetterpost_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)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 stibetterpost_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 tbetterpost_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 (gbetterpost_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 prbetterpost_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 fetbetterpost_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 wCall the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_029da1de56 # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-09-24
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-09-24
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_029da1de56)<a href="https://jishie.com/agent.html?id=aix_029da1de56"><img src="https://jishie.com/v1/agents/aix_029da1de56/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — general-tools
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 81 | — |
| Apiosk T2 | relevance 79 | — |
| mcp T2 | relevance 79 | — |
| title-check T2 | relevance 78 | — |
| Dataroia Data Trust T2 | relevance 78 | — |
Raw machine record (what agents receive)
{
"id": "aix_029da1de56",
"name": "BetterPost",
"operator": "(unclaimed - source: registry-official · publisher: ai.betterpost)",
"description": "Finds timely sources across news, social, and the web and writes posts worth publishing.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-09-24",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"general-tools"
],
"protocols": {
"mcp": "https://betterpost.ai/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 1964,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 48,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-09-24T22:00:50.176Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://betterpost.ai/"
},
{
"label": "repository",
"url": "https://github.com/betterpost/betterpost-plugin"
}
],
"avatar": "https://github.com/betterpost.png?size=160",
"socials": [
{
"label": "github",
"url": "https://github.com/betterpost"
}
],
"profile": {
"mcp_server": "betterpost",
"mcp_version": "0.1.0",
"tool_count": 23,
"tools": [
{
"name": "betterpost_create_project",
"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."
},
{
"name": "betterpost_generate_content",
"description": "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."
},
{
"name": "betterpost_derive_content",
"description": "Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic."
},
{
"name": "betterpost_list_content",
"description": "List a project's content (summaries + shareable `publicUrl` links)."
},
{
"name": "betterpost_get_content",
"description": "Fetch one piece of content in full."
},
{
"name": "betterpost_delete_content",
"description": "Delete a piece of content and its hosted images."
},
{
"name": "betterpost_list_projects",
"description": "Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic."
},
{
"name": "betterpost_get_project",
"description": "Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project)."
},
{
"name": "betterpost_update_project",
"description": "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."
},
{
"name": "betterpost_delete_project",
"description": "Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone."
},
{
"name": "betterpost_list_sources",
"description": "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."
},
{
"name": "betterpost_add_source",
"description": "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`)."
},
{
"name": "betterpost_remove_source",
"description": "Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched."
},
{
"name": "betterpost_list_stories",
"description": "Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones."
},
{
"name": "betterpost_add_story",
"description": "Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it."
},
{
"name": "betterpost_hide_story",
"description": "Hides a story so generation ignores it. Reversible with unhide_story."
},
{
"name": "betterpost_unhide_story",
"description": "Unhides a previously hidden story so generation can use it again."
},
{
"name": "betterpost_suggest_topics",
"description": "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."
},
{
"name": "betterpost_get_usage",
"description": "Your credit balance, freeze state, and recent spend."
},
{
"name": "betterpost_get_settings",
"description": "Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel)."
},
{
"name": "betterpost_update_settings",
"description": "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."
},
{
"name": "betterpost_expand_coverage",
"description": "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."
},
{
"name": "betterpost_humanize",
"description": "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."
}
],
"profiled_at": "2026-09-24T22:00:50.176Z"
},
"unreachable": false,
"payment_method": "oauth"
}