BetterPost
What this MCP does
Gathers timely stories from news, web, and social sources and generates, transforms, and manages publishable content.
Tools
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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`.'}}}
Output schema
{'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}
Input schema
{'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}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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."}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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)$'}}}
Output schema
{'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}
Input schema
{'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'}]}}}
Output schema
{'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}
Recent tool changes
Similar MCP servers
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
Jargon Translator
Provides corporate-jargon translation, AI brand visibility checks, AI crawler indexing files, and routed research across structur…
particle-pro
Searches and analyzes podcast episodes, transcripts, speakers, companies, topics, clips, rankings, sponsorships, and entity menti…
Niche — Editorial Intelligence
Discovers and ranks emerging stories, proposes editorial angles, generates platform-specific content, renders media, and supports…
agents
Offers paid agents for brand visibility checks, web data extraction, webpage reading, marketing video production, and deliverable…
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…