MCP-Server

BetterPost

ai.betterpost/server
Marketing & Werbung Medien & Inhalte Suche & Recherche Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Gathers timely stories from news, web, and social sources and generates, transforms, and manages publishable content.

betterpost_add_source
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, 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`).
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'value'], 'properties': {'name': {'type': 'string'}, 'type': {'enum': ['autodetect', 'web-search', 'reddit-search', 'youtube-search', 'x', 'bluesky'], 'type': 'string', 'default': 'autodetect', 'description': "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, LinkedIn company pages, Instagram profiles, YouTube videos, and Hacker News items â\x80\x94 leave it as 'autodetect' for any URL. For a recurring keyword search that re-runs over time, set `value` to the search terms and pick a search kind: 'web-search', 'reddit-search', 'youtube-search', 'x' (X/Twitter search), or 'bluesky' (Bluesky search)."}, 'value': {'type': 'string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source', 'fetched', 'storiesAdded'], 'properties': {'note': {'type': 'string'}, 'source': {'type': 'object', 'required': ['id', 'projectId', 'name', 'type', 'value', 'lastFetchedAt', 'lastFetchSuccess', 'lastFetchError', 'failStreak', 'disabled', 'createdAt'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'value': {'type': 'string'}, 'disabled': {'type': 'boolean'}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'failStreak': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'lastFetchedAt': {'description': 'ISO 8601 datetime string'}, 'lastFetchError': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'lastFetchSuccess': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'fetched': {'type': 'boolean'}, 'storiesAdded': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
betterpost_add_story
Add story
Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storyId'], 'properties': {'storyId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_create_project
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.
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'audience'], 'properties': {'tone': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}, 'audience': {'type': 'string', 'minLength': 1}, 'description': {'type': 'string'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'industry', 'tone', 'criteria', 'storiesGot', 'storiesGoal', 'hasXSource', 'warming'], 'properties': {'tone': {'type': 'string'}, 'reason': {'type': 'string'}, 'warming': {'type': 'boolean'}, 'criteria': {'type': 'array', 'items': {'type': 'string'}}, 'industry': {'type': 'string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'hasXSource': {'type': 'boolean'}, 'storiesGot': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'storiesGoal': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
betterpost_delete_content
Delete content
Delete a piece of content and its hosted images.
Destruktiv Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contentId'], 'properties': {'contentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deleted'], 'properties': {'deleted': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_delete_project
Delete project
Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.
Destruktiv Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deleted'], 'properties': {'deleted': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_derive_content
Derive content
Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fromContentId', 'type'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'tieIn': {'type': 'string'}, 'fromContentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contentId', 'type', 'content', 'summary', 'publicUrl', 'storyCount', 'topic', 'imagesHosted', 'creditsCharged'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'topic': {'type': 'string'}, 'content': {'type': 'object', 'required': ['type'], 'properties': {'body': {'type': 'string'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'title': {'type': 'string'}, 'content': {'type': 'string'}, 'previewText': {'type': 'string'}, 'subjectLine': {'type': 'string'}, 'metaDescription': {'type': 'string'}}, 'description': 'The generated content. Fields present depend on `type`.', 'additionalProperties': False}, 'summary': {'type': 'string'}, 'contentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'publicUrl': {'type': 'string'}, 'storyCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'imagesHosted': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'creditsCharged': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
betterpost_expand_coverage
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` (~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.
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'focus': {'type': 'string', 'description': 'The topic to get more on (e.g. "League of Legends"). Omit to broaden the whole project.'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'addAsCriteria': {'type': 'boolean', 'description': 'Also append an in-scope `focus` as a standing relevance criterion (out-of-scope, confirmed foci are added automatically).'}, 'confirmedByUser': {'type': 'boolean', 'description': 'Set true once the user has agreed to widen the project to an out-of-scope `focus`.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['criteriaAdded', 'sourcesAdded', 'storiesAdded', 'warming', 'retryAfterMs'], 'properties': {'warming': {'type': 'boolean'}, 'retryAfterMs': {'type': 'number'}, 'sourcesAdded': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'value'], 'properties': {'type': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'storiesAdded': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'criteriaAdded': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
betterpost_generate_content
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 silently writes an off-topic piece.
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'type'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string', 'description': "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 â\x80\x94 this is the default for those channels. 'blog', 'newsletter', and 'linkedin' are one piece."}, 'reuse': {'type': 'boolean', 'description': 'Reuse the most recent topic.'}, 'tieIn': {'type': 'string', 'description': 'A product/service to weave in.'}, 'topic': {'type': 'string', 'description': "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 topic fits the project and betterpost_expand_coverage can gather it, while inScope:false means it is outside the project scope so expanding to it requires the user's confirmation."}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'wordLimit': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contentId', 'type', 'content', 'summary', 'publicUrl', 'storyCount', 'topic', 'imagesHosted', 'creditsCharged'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'topic': {'type': 'string'}, 'content': {'type': 'object', 'required': ['type'], 'properties': {'body': {'type': 'string'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'title': {'type': 'string'}, 'content': {'type': 'string'}, 'previewText': {'type': 'string'}, 'subjectLine': {'type': 'string'}, 'metaDescription': {'type': 'string'}}, 'description': 'The generated content. Fields present depend on `type`.', 'additionalProperties': False}, 'summary': {'type': 'string'}, 'contentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'publicUrl': {'type': 'string'}, 'storyCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'imagesHosted': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'creditsCharged': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
betterpost_get_content
Get content
Fetch one piece of content in full.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contentId'], 'properties': {'contentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'projectId', 'type', 'content', 'summary', 'wordLimit', 'storyCount', 'topicId', 'derivedFromContentId', 'publicUrl', 'createdAt'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'content': {'type': 'object', 'required': ['type'], 'properties': {'body': {'type': 'string'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'title': {'type': 'string'}, 'content': {'type': 'string'}, 'previewText': {'type': 'string'}, 'subjectLine': {'type': 'string'}, 'metaDescription': {'type': 'string'}}, 'description': 'The generated content. Fields present depend on `type`.', 'additionalProperties': False}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'topicId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, {'type': 'null'}]}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'publicUrl': {'type': 'string'}, 'wordLimit': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'storyCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'derivedFromContentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, {'type': 'null'}]}}, 'additionalProperties': False}
betterpost_get_project
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).
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'title', 'audience', 'description', 'tone', 'industry', 'additionalInstructions', 'maxStoryAgeDays', 'timezone', 'status', 'hasXSource', 'createdAt', 'updatedAt', 'criteria'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'tone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'status': {'enum': ['initializing', 'ready'], 'type': 'string'}, 'audience': {'type': 'string'}, 'criteria': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'text': {'type': 'string'}}, 'additionalProperties': False}}, 'industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'timezone': {'type': 'string'}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'updatedAt': {'description': 'ISO 8601 datetime string'}, 'hasXSource': {'type': 'boolean'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'maxStoryAgeDays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
betterpost_get_settings
Get settings
Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contentTypeSettings'], 'properties': {'contentTypeSettings': {'type': 'array', 'items': {'type': 'object', 'required': ['projectId', 'type', 'wordLimit', 'additionalInstructions'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'wordLimit': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
betterpost_get_usage
Get usage
Your credit balance, freeze state, and recent spend.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind', 'creditBalance', 'frozen', 'recentSpendUsd'], 'properties': {'kind': {'type': 'string', 'const': 'paid'}, 'frozen': {'type': 'boolean'}, 'creditBalance': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'recentSpendUsd': {'type': 'number'}}, 'additionalProperties': False}
betterpost_hide_story
Hide story
Hides a story so generation ignores it. Reversible with unhide_story.
Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storyId'], 'properties': {'storyId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storyId', 'hidden'], 'properties': {'hidden': {'type': 'boolean'}, 'storyId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_humanize
Humanize text
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.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['text'], 'properties': {'text': {'type': 'string', 'maxLength': 30000, 'minLength': 1, 'description': 'The text to humanize (max 30,000 characters).'}, 'tone': {'type': 'string', 'description': 'Tone override; wins over the project tone.'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string', 'description': "Apply this channel's style rules to the rewrite."}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Use this project's tone and writing instructions."}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['text', 'changes', 'inputWords', 'creditsCharged'], 'properties': {'text': {'type': 'string', 'description': 'The rewritten text, a drop-in replacement for the input'}, 'changes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short notes on the main edits made'}, 'inputWords': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'creditsCharged': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
betterpost_list_content
List content
List a project's content (summaries + shareable `publicUrl` links).
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['content'], 'properties': {'content': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'summary', 'createdAt', 'publicUrl'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'publicUrl': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
betterpost_list_projects
List projects
Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projects'], 'properties': {'projects': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'audience', 'description', 'tone', 'industry', 'additionalInstructions', 'maxStoryAgeDays', 'timezone', 'status', 'hasXSource', 'createdAt', 'updatedAt', 'criteria'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'tone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'status': {'enum': ['initializing', 'ready'], 'type': 'string'}, 'audience': {'type': 'string'}, 'criteria': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'text': {'type': 'string'}}, 'additionalProperties': False}}, 'industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'timezone': {'type': 'string'}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'updatedAt': {'description': 'ISO 8601 datetime string'}, 'hasXSource': {'type': 'boolean'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'maxStoryAgeDays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
betterpost_list_sources
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.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'description': 'Max sources to return (default 50).', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of sources to skip; use the returned nextOffset to page.'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['total', 'offset', 'limit', 'returned', 'nextOffset', 'counts', 'sources'], 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'counts': {'type': 'object', 'required': ['ok', 'failing', 'disabled', 'pending', 'byType'], 'properties': {'ok': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'byType': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'failing': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pending': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'disabled': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'value'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'ok': {'type': 'boolean'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'value': {'type': 'string'}, 'pending': {'type': 'boolean', 'const': True}, 'disabled': {'type': 'boolean', 'const': True}, 'failStreak': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'lastFetchedAt': {'description': 'ISO 8601 datetime string'}, 'lastFetchError': {'type': 'string'}}, 'additionalProperties': False}}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'nextOffset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}}, 'additionalProperties': False}
betterpost_list_stories
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.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'includeHidden': {'type': 'boolean'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['stories'], 'properties': {'stories': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'projectId', 'sourceId', 'url', 'title', 'summary', 'keyPoints', 'quotes', 'images', 'relevancy', 'isTimely', 'timelinessReason', 'contentType', 'author', 'publicationDate', 'status', 'isManual', 'isHidden', 'createdAt'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'url': {'type': 'string'}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'author': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'description'], 'properties': {'url': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'quotes': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'status': {'enum': ['pending', 'ready', 'hidden'], 'type': 'string'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'isHidden': {'type': 'boolean'}, 'isManual': {'type': 'boolean'}, 'isTimely': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'sourceId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, {'type': 'null'}]}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'keyPoints': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'relevancy': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'contentType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'publicationDate': {'description': 'ISO 8601 datetime string'}, 'timelinessReason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
betterpost_remove_source
Remove source
Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.
Destruktiv Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sourceId'], 'properties': {'sourceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['removed'], 'properties': {'removed': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_suggest_topics
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.
Externer Zugriff
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 5, 'minimum': 1}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'topics'], 'properties': {'topics': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'storyCount', 'examples'], 'properties': {'label': {'type': 'string'}, 'examples': {'type': 'array', 'items': {'type': 'string'}}, 'storyCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_unhide_story
Unhide story
Unhides a previously hidden story so generation can use it again.
Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storyId'], 'properties': {'storyId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storyId', 'hidden'], 'properties': {'hidden': {'type': 'boolean'}, 'storyId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
betterpost_update_project
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 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.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'patch': {'type': 'object', 'properties': {'tone': {'type': 'string'}, 'title': {'type': 'string'}, 'audience': {'type': 'string'}, 'timezone': {'type': 'string'}, 'addCriteria': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Relevance-criterion texts to APPEND (incremental, never replace-all).'}, 'description': {'type': 'string'}, 'removeCriteria': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'description': 'Criterion ids (from get_project/list_projects) to remove.'}, 'maxStoryAgeDays': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Freshness window in days (default 14, allowed 1â\x80\x9330; 7â\x80\x9314 is optimal). Generation only uses stories newer than this. Widen it toward 30 for slow or evergreen niches where timely stories are sparse and generate_content returns no_stories; narrow it for fast-moving topics.'}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Partial update: EVERY field is optional â\x80\x94 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 or omitting `patch` entirely is a no-op. Fields: title, audience, description, tone, maxStoryAgeDays, additionalInstructions, timezone, addCriteria, removeCriteria.'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'title', 'audience', 'description', 'tone', 'industry', 'additionalInstructions', 'maxStoryAgeDays', 'timezone', 'status', 'hasXSource', 'createdAt', 'updatedAt', 'criteria'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'tone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'status': {'enum': ['initializing', 'ready'], 'type': 'string'}, 'audience': {'type': 'string'}, 'criteria': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'text': {'type': 'string'}}, 'additionalProperties': False}}, 'industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'timezone': {'type': 'string'}, 'createdAt': {'description': 'ISO 8601 datetime string'}, 'updatedAt': {'description': 'ISO 8601 datetime string'}, 'hasXSource': {'type': 'boolean'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'maxStoryAgeDays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
betterpost_update_settings
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.
Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'type'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'wordLimit': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['updated'], 'properties': {'updated': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['blog', 'newsletter', 'linkedin', 'x', 'bluesky'], 'type': 'string'}, 'wordLimit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'additionalInstructions': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}
Hinzugefügt
betterpost_humanize
11. September 2026 15:31
Hinzugefügt
betterpost_expand_coverage
11. September 2026 15:31
Hinzugefügt
betterpost_update_settings
11. September 2026 15:31
Hinzugefügt
betterpost_get_settings
11. September 2026 15:31
Hinzugefügt
betterpost_get_usage
11. September 2026 15:31
Hinzugefügt
betterpost_suggest_topics
11. September 2026 15:31
Hinzugefügt
betterpost_unhide_story
11. September 2026 15:31
Hinzugefügt
betterpost_hide_story
11. September 2026 15:31
Hinzugefügt
betterpost_add_story
11. September 2026 15:31
Hinzugefügt
betterpost_list_stories
11. September 2026 15:31
Hinzugefügt
betterpost_remove_source
11. September 2026 15:31
Hinzugefügt
betterpost_add_source
11. September 2026 15:31
Hinzugefügt
betterpost_list_sources
11. September 2026 15:31
Hinzugefügt
betterpost_delete_project
11. September 2026 15:31
Hinzugefügt
betterpost_update_project
11. September 2026 15:31
Hinzugefügt
betterpost_get_project
11. September 2026 15:31
Hinzugefügt
betterpost_list_projects
11. September 2026 15:31
Hinzugefügt
betterpost_delete_content
11. September 2026 15:31
Hinzugefügt
betterpost_get_content
11. September 2026 15:31
Hinzugefügt
betterpost_list_content
11. September 2026 15:31
Hinzugefügt
betterpost_derive_content
11. September 2026 15:31
Hinzugefügt
betterpost_generate_content
11. September 2026 15:31
Hinzugefügt
betterpost_create_project
11. September 2026 15:31