Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,526Letters: 13Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:384b614f58fa4e59a5e82c36eac2237823fd9dd4e5b48783a9995d2f406e8348
What it is
What a remote MCP server returned when asked what it offers: 23 tools

The blob, as servednamed by its sha256

{ "instructions": "BetterPost: generate timely, well-sourced content. Create a project, then generate content for it. Sign in with your BetterPost account when prompted — new accounts start with 100 free credits, and your projects and content stay linked to your account automatically. Before generating, you can call betterpost_suggest_topics {projectId, type} to get a few candidate angles, then ask the user whether they want a specific one (like those) or just the latest news — pass their choice as generate_content's `topic`, or omit `topic` for the latest news.", "tools": [ { "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`).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "name": { "type": "string" }, "projectId": { "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": "string" }, "type": { "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 — 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).", "enum": [ "autodetect", "web-search", "reddit-search", "youtube-search", "x", "bluesky" ], "type": "string" }, "value": { "type": "string" } }, "required": [ "projectId", "value" ], "type": "object" }, "name": "betterpost_add_source", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "fetched": { "type": "boolean" }, "note": { "type": "string" }, "source": { "additionalProperties": false, "properties": { "createdAt": { "description": "ISO 8601 datetime string" }, "disabled": { "type": "boolean" }, "failStreak": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "id": { "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": "string" }, "lastFetchError": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "lastFetchSuccess": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "lastFetchedAt": { "description": "ISO 8601 datetime string" }, "name": { "type": "string" }, "projectId": { "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": "string" }, "type": { "type": "string" }, "value": { "type": "string" } }, "required": [ "id", "projectId", "name", "type", "value", "lastFetchedAt", "lastFetchSuccess", "lastFetchError", "failStreak", "disabled", "createdAt" ], "type": "object" }, "storiesAdded": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "source", "fetched", "storiesAdded" ], "type": "object" } }, { "description": "Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" }, "summary": { "type": "string" }, "title": { "type": "string" }, "url": { "format": "uri", "type": "string" } }, "required": [ "projectId", "url" ], "type": "object" }, "name": "betterpost_add_story", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "storyId": { "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": "string" } }, "required": [ "storyId" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "audience": { "minLength": 1, "type": "string" }, "description": { "type": "string" }, "title": { "minLength": 1, "type": "string" }, "tone": { "type": "string" } }, "required": [ "title", "audience" ], "type": "object" }, "name": "betterpost_create_project", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "criteria": { "items": { "type": "string" }, "type": "array" }, "hasXSource": { "type": "boolean" }, "industry": { "type": "string" }, "projectId": { "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": "string" }, "reason": { "type": "string" }, "storiesGoal": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "storiesGot": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "tone": { "type": "string" }, "warming": { "type": "boolean" } }, "required": [ "projectId", "industry", "tone", "criteria", "storiesGot", "storiesGoal", "hasXSource", "warming" ], "type": "object" } }, { "description": "Delete a piece of content and its hosted images.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contentId": { "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": "string" } }, "required": [ "contentId" ], "type": "object" }, "name": "betterpost_delete_content", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "deleted": { "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": "string" } }, "required": [ "deleted" ], "type": "object" } }, { "description": "Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_delete_project", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "deleted": { "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": "string" } }, "required": [ "deleted" ], "type": "object" } }, { "description": "Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fromContentId": { "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": "string" }, "tieIn": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "fromContentId", "type" ], "type": "object" }, "name": "betterpost_derive_content", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "content": { "additionalProperties": false, "description": "The generated content. Fields present depend on `type`.", "properties": { "body": { "type": "string" }, "content": { "type": "string" }, "metaDescription": { "type": "string" }, "previewText": { "type": "string" }, "subjectLine": { "type": "string" }, "title": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "contentId": { "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": "string" }, "creditsCharged": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "imagesHosted": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "publicUrl": { "type": "string" }, "storyCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "summary": { "type": "string" }, "topic": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "contentId", "type", "content", "summary", "publicUrl", "storyCount", "topic", "imagesHosted", "creditsCharged" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "addAsCriteria": { "description": "Also append an in-scope `focus` as a standing relevance criterion (out-of-scope, confirmed foci are added automatically).", "type": "boolean" }, "confirmedByUser": { "description": "Set true once the user has agreed to widen the project to an out-of-scope `focus`.", "type": "boolean" }, "focus": { "description": "The topic to get more on (e.g. \"League of Legends\"). Omit to broaden the whole project.", "type": "string" }, "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_expand_coverage", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "criteriaAdded": { "items": { "type": "string" }, "type": "array" }, "retryAfterMs": { "type": "number" }, "sourcesAdded": { "items": { "additionalProperties": false, "properties": { "type": { "type": "string" }, "value": { "type": "string" } }, "required": [ "type", "value" ], "type": "object" }, "type": "array" }, "storiesAdded": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "warming": { "type": "boolean" } }, "required": [ "criteriaAdded", "sourcesAdded", "storiesAdded", "warming", "retryAfterMs" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" }, "reuse": { "description": "Reuse the most recent topic.", "type": "boolean" }, "tieIn": { "description": "A product/service to weave in.", "type": "string" }, "topic": { "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.", "type": "string" }, "type": { "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 — this is the default for those channels. 'blog', 'newsletter', and 'linkedin' are one piece.", "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" }, "wordLimit": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "projectId", "type" ], "type": "object" }, "name": "betterpost_generate_content", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "content": { "additionalProperties": false, "description": "The generated content. Fields present depend on `type`.", "properties": { "body": { "type": "string" }, "content": { "type": "string" }, "metaDescription": { "type": "string" }, "previewText": { "type": "string" }, "subjectLine": { "type": "string" }, "title": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "contentId": { "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": "string" }, "creditsCharged": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "imagesHosted": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "publicUrl": { "type": "string" }, "storyCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "summary": { "type": "string" }, "topic": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "contentId", "type", "content", "summary", "publicUrl", "storyCount", "topic", "imagesHosted", "creditsCharged" ], "type": "object" } }, { "description": "Fetch one piece of content in full.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contentId": { "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": "string" } }, "required": [ "contentId" ], "type": "object" }, "name": "betterpost_get_content", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "content": { "additionalProperties": false, "description": "The generated content. Fields present depend on `type`.", "properties": { "body": { "type": "string" }, "content": { "type": "string" }, "metaDescription": { "type": "string" }, "previewText": { "type": "string" }, "subjectLine": { "type": "string" }, "title": { "type": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "createdAt": { "description": "ISO 8601 datetime string" }, "derivedFromContentId": { "anyOf": [ { "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": "string" }, { "type": "null" } ] }, "id": { "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": "string" }, "projectId": { "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": "string" }, "publicUrl": { "type": "string" }, "storyCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "topicId": { "anyOf": [ { "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": "string" }, { "type": "null" } ] }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" }, "wordLimit": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] } }, "required": [ "id", "projectId", "type", "content", "summary", "wordLimit", "storyCount", "topicId", "derivedFromContentId", "publicUrl", "createdAt" ], "type": "object" } }, { "description": "Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_get_project", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audience": { "type": "string" }, "createdAt": { "description": "ISO 8601 datetime string" }, "criteria": { "items": { "additionalProperties": false, "properties": { "id": { "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": "string" }, "text": { "type": "string" } }, "required": [ "id", "text" ], "type": "object" }, "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "hasXSource": { "type": "boolean" }, "id": { "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": "string" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "maxStoryAgeDays": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "status": { "enum": [ "initializing", "ready" ], "type": "string" }, "timezone": { "type": "string" }, "title": { "type": "string" }, "tone": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "description": "ISO 8601 datetime string" } }, "required": [ "id", "title", "audience", "description", "tone", "industry", "additionalInstructions", "maxStoryAgeDays", "timezone", "status", "hasXSource", "createdAt", "updatedAt", "criteria" ], "type": "object" } }, { "description": "Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_get_settings", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "contentTypeSettings": { "items": { "additionalProperties": false, "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "projectId": { "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": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" }, "wordLimit": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] } }, "required": [ "projectId", "type", "wordLimit", "additionalInstructions" ], "type": "object" }, "type": "array" } }, "required": [ "contentTypeSettings" ], "type": "object" } }, { "description": "Your credit balance, freeze state, and recent spend.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "betterpost_get_usage", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "creditBalance": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "frozen": { "type": "boolean" }, "kind": { "const": "paid", "type": "string" }, "recentSpendUsd": { "type": "number" } }, "required": [ "kind", "creditBalance", "frozen", "recentSpendUsd" ], "type": "object" } }, { "description": "Hides a story so generation ignores it. Reversible with unhide_story.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "storyId": { "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": "string" } }, "required": [ "storyId" ], "type": "object" }, "name": "betterpost_hide_story", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "hidden": { "type": "boolean" }, "storyId": { "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": "string" } }, "required": [ "storyId", "hidden" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "description": "Use this project's tone and writing instructions.", "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": "string" }, "text": { "description": "The text to humanize (max 30,000 characters).", "maxLength": 30000, "minLength": 1, "type": "string" }, "tone": { "description": "Tone override; wins over the project tone.", "type": "string" }, "type": { "description": "Apply this channel's style rules to the rewrite.", "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "betterpost_humanize", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "changes": { "description": "Short notes on the main edits made", "items": { "type": "string" }, "type": "array" }, "creditsCharged": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "inputWords": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "text": { "description": "The rewritten text, a drop-in replacement for the input", "type": "string" } }, "required": [ "text", "changes", "inputWords", "creditsCharged" ], "type": "object" } }, { "description": "List a project's content (summaries + shareable `publicUrl` links).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_list_content", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "content": { "items": { "additionalProperties": false, "properties": { "createdAt": { "description": "ISO 8601 datetime string" }, "id": { "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": "string" }, "publicUrl": { "type": "string" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "id", "type", "summary", "createdAt", "publicUrl" ], "type": "object" }, "type": "array" } }, "required": [ "content" ], "type": "object" } }, { "description": "Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "betterpost_list_projects", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "projects": { "items": { "additionalProperties": false, "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audience": { "type": "string" }, "createdAt": { "description": "ISO 8601 datetime string" }, "criteria": { "items": { "additionalProperties": false, "properties": { "id": { "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": "string" }, "text": { "type": "string" } }, "required": [ "id", "text" ], "type": "object" }, "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "hasXSource": { "type": "boolean" }, "id": { "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": "string" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "maxStoryAgeDays": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "status": { "enum": [ "initializing", "ready" ], "type": "string" }, "timezone": { "type": "string" }, "title": { "type": "string" }, "tone": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "description": "ISO 8601 datetime string" } }, "required": [ "id", "title", "audience", "description", "tone", "industry", "additionalInstructions", "maxStoryAgeDays", "timezone", "status", "hasXSource", "createdAt", "updatedAt", "criteria" ], "type": "object" }, "type": "array" } }, "required": [ "projects" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "description": "Max sources to return (default 50).", "exclusiveMinimum": 0, "maximum": 200, "type": "integer" }, "offset": { "description": "Number of sources to skip; use the returned nextOffset to page.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_list_sources", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "counts": { "additionalProperties": false, "properties": { "byType": { "additionalProperties": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "propertyNames": { "type": "string" }, "type": "object" }, "disabled": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "failing": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "ok": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "pending": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "ok", "failing", "disabled", "pending", "byType" ], "type": "object" }, "limit": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "nextOffset": { "anyOf": [ { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, { "type": "null" } ] }, "offset": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "returned": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "sources": { "items": { "additionalProperties": false, "properties": { "disabled": { "const": true, "type": "boolean" }, "failStreak": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "id": { "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": "string" }, "lastFetchError": { "type": "string" }, "lastFetchedAt": { "description": "ISO 8601 datetime string" }, "name": { "type": "string" }, "ok": { "type": "boolean" }, "pending": { "const": true, "type": "boolean" }, "type": { "type": "string" }, "value": { "type": "string" } }, "required": [ "id", "type", "value" ], "type": "object" }, "type": "array" }, "total": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "total", "offset", "limit", "returned", "nextOffset", "counts", "sources" ], "type": "object" } }, { "description": "Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "includeHidden": { "type": "boolean" }, "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_list_stories", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "stories": { "items": { "additionalProperties": false, "properties": { "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "createdAt": { "description": "ISO 8601 datetime string" }, "id": { "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": "string" }, "images": { "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "url": { "type": "string" } }, "required": [ "url", "description" ], "type": "object" }, "type": "array" }, "isHidden": { "type": "boolean" }, "isManual": { "type": "boolean" }, "isTimely": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "keyPoints": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ] }, "projectId": { "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": "string" }, "publicationDate": { "description": "ISO 8601 datetime string" }, "quotes": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ] }, "relevancy": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "sourceId": { "anyOf": [ { "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": "string" }, { "type": "null" } ] }, "status": { "enum": [ "pending", "ready", "hidden" ], "type": "string" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "timelinessReason": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "url": { "type": "string" } }, "required": [ "id", "projectId", "sourceId", "url", "title", "summary", "keyPoints", "quotes", "images", "relevancy", "isTimely", "timelinessReason", "contentType", "author", "publicationDate", "status", "isManual", "isHidden", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "stories" ], "type": "object" } }, { "description": "Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "sourceId": { "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": "string" } }, "required": [ "sourceId" ], "type": "object" }, "name": "betterpost_remove_source", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "removed": { "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": "string" } }, "required": [ "removed" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "count": { "maximum": 5, "minimum": 1, "type": "integer" }, "projectId": { "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": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_suggest_topics", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "projectId": { "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": "string" }, "topics": { "items": { "additionalProperties": false, "properties": { "examples": { "items": { "type": "string" }, "type": "array" }, "label": { "type": "string" }, "storyCount": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "label", "storyCount", "examples" ], "type": "object" }, "type": "array" } }, "required": [ "projectId", "topics" ], "type": "object" } }, { "description": "Unhides a previously hidden story so generation can use it again.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "storyId": { "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": "string" } }, "required": [ "storyId" ], "type": "object" }, "name": "betterpost_unhide_story", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "hidden": { "type": "boolean" }, "storyId": { "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": "string" } }, "required": [ "storyId", "hidden" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "patch": { "description": "Partial update: EVERY field is optional — include only the fields you want to change and omit the rest (an omitted field is left untouched; there are no required patch fields). Passing an empty object or omitting `patch` entirely is a no-op. Fields: title, audience, description, tone, maxStoryAgeDays, additionalInstructions, timezone, addCriteria, removeCriteria.", "properties": { "addCriteria": { "description": "Relevance-criterion texts to APPEND (incremental, never replace-all).", "items": { "type": "string" }, "type": "array" }, "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audience": { "type": "string" }, "description": { "type": "string" }, "maxStoryAgeDays": { "description": "Freshness window in days (default 14, allowed 1–30; 7–14 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.", "maximum": 30, "minimum": 1, "type": "integer" }, "removeCriteria": { "description": "Criterion ids (from get_project/list_projects) to remove.", "items": { "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": "string" }, "type": "array" }, "timezone": { "type": "string" }, "title": { "type": "string" }, "tone": { "type": "string" } }, "type": "object" }, "projectId": { "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": "string" } }, "required": [ "projectId" ], "type": "object" }, "name": "betterpost_update_project", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audience": { "type": "string" }, "createdAt": { "description": "ISO 8601 datetime string" }, "criteria": { "items": { "additionalProperties": false, "properties": { "id": { "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": "string" }, "text": { "type": "string" } }, "required": [ "id", "text" ], "type": "object" }, "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "hasXSource": { "type": "boolean" }, "id": { "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": "string" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "maxStoryAgeDays": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "status": { "enum": [ "initializing", "ready" ], "type": "string" }, "timezone": { "type": "string" }, "title": { "type": "string" }, "tone": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "updatedAt": { "description": "ISO 8601 datetime string" } }, "required": [ "id", "title", "audience", "description", "tone", "industry", "additionalInstructions", "maxStoryAgeDays", "timezone", "status", "hasXSource", "createdAt", "updatedAt", "criteria" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "projectId": { "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": "string" }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" }, "wordLimit": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "projectId", "type" ], "type": "object" }, "name": "betterpost_update_settings", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "updated": { "additionalProperties": false, "properties": { "additionalInstructions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "enum": [ "blog", "newsletter", "linkedin", "x", "bluesky" ], "type": "string" }, "wordLimit": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "type" ], "type": "object" } }, "required": [ "updated" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:384b614f58fa4e59a5e82c36eac2237823fd9dd4e5b48783a9995d2f406e8348 | sha256sum