BetterPost
Finds timely sources across news, social, and the web and writes posts worth publishing.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- LOWbetterpost_get_usage에서
- LOWbetterpost_expand_coverage에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"server": {
"url": "https://betterpost.ai/mcp"
}
}
}원격 엔드포인트
https://betterpost.ai/mcpstreamable-http할 수 있는 일
도구 목록
도구 (23)
🟡betterpost_create_project(title, audience, description, tone)
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.
입력 스키마
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"audience": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"tone": {
"type": "string"
}
},
"required": [
"title",
"audience"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"industry": {
"type": "string"
},
"tone": {
"type": "string"
},
"criteria": {
"type": "array",
"items": {
"type": "string"
}
},
"storiesGot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"storiesGoal": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"hasXSource": {
"type": "boolean"
},
"warming": {
"type": "boolean"
},
"reason": {
"type": "string"
}
},
"required": [
"projectId",
"industry",
"tone",
"criteria",
"storiesGot",
"storiesGoal",
"hasXSource",
"warming"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_generate_content(projectId, type, topic, reuse, tieIn, ...)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
],
"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."
},
"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"
},
"reuse": {
"description": "Reuse the most recent topic.",
"type": "boolean"
},
"tieIn": {
"description": "A product/service to weave in.",
"type": "string"
},
"wordLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"projectId",
"type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"content": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"metaDescription": {
"type": "string"
},
"subjectLine": {
"type": "string"
},
"previewText": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false,
"description": "The generated content. Fields present depend on `type`."
},
"summary": {
"type": "string"
},
"publicUrl": {
"type": "string"
},
"storyCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"topic": {
"type": "string"
},
"imagesHosted": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"creditsCharged": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"contentId",
"type",
"content",
"summary",
"publicUrl",
"storyCount",
"topic",
"imagesHosted",
"creditsCharged"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_derive_content(fromContentId, type, tieIn)
Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.
입력 스키마
{
"type": "object",
"properties": {
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"tieIn": {
"type": "string"
}
},
"required": [
"fromContentId",
"type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"content": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"metaDescription": {
"type": "string"
},
"subjectLine": {
"type": "string"
},
"previewText": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false,
"description": "The generated content. Fields present depend on `type`."
},
"summary": {
"type": "string"
},
"publicUrl": {
"type": "string"
},
"storyCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"topic": {
"type": "string"
},
"imagesHosted": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"creditsCharged": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"contentId",
"type",
"content",
"summary",
"publicUrl",
"storyCount",
"topic",
"imagesHosted",
"creditsCharged"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_list_content(projectId)
List a project's content (summaries + shareable `publicUrl` links).
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"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": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"description": "ISO 8601 datetime string"
},
"publicUrl": {
"type": "string"
}
},
"required": [
"id",
"type",
"summary",
"createdAt",
"publicUrl"
],
"additionalProperties": false
}
}
},
"required": [
"content"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_get_content(contentId)
Fetch one piece of content in full.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"contentId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"content": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"metaDescription": {
"type": "string"
},
"subjectLine": {
"type": "string"
},
"previewText": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false,
"description": "The generated content. Fields present depend on `type`."
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wordLimit": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"storyCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"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"
}
]
},
"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"
}
]
},
"publicUrl": {
"type": "string"
},
"createdAt": {
"description": "ISO 8601 datetime string"
}
},
"required": [
"id",
"projectId",
"type",
"content",
"summary",
"wordLimit",
"storyCount",
"topicId",
"derivedFromContentId",
"publicUrl",
"createdAt"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴betterpost_delete_content(contentId)
Delete a piece of content and its hosted images.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"contentId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"deleted"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_list_projects
Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"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)$"
},
"title": {
"type": "string"
},
"audience": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"industry": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"maxStoryAgeDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"initializing",
"ready"
]
},
"hasXSource": {
"type": "boolean"
},
"createdAt": {
"description": "ISO 8601 datetime string"
},
"updatedAt": {
"description": "ISO 8601 datetime string"
},
"criteria": {
"type": "array",
"items": {
"type": "object",
"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"
}
},
"required": [
"id",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"audience",
"description",
"tone",
"industry",
"additionalInstructions",
"maxStoryAgeDays",
"timezone",
"status",
"hasXSource",
"createdAt",
"updatedAt",
"criteria"
],
"additionalProperties": false
}
}
},
"required": [
"projects"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_get_project(projectId)
Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project).
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"title": {
"type": "string"
},
"audience": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"industry": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"maxStoryAgeDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"initializing",
"ready"
]
},
"hasXSource": {
"type": "boolean"
},
"createdAt": {
"description": "ISO 8601 datetime string"
},
"updatedAt": {
"description": "ISO 8601 datetime string"
},
"criteria": {
"type": "array",
"items": {
"type": "object",
"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"
}
},
"required": [
"id",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"audience",
"description",
"tone",
"industry",
"additionalInstructions",
"maxStoryAgeDays",
"timezone",
"status",
"hasXSource",
"createdAt",
"updatedAt",
"criteria"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡betterpost_update_project(projectId, patch)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"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.",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"audience": {
"type": "string"
},
"description": {
"type": "string"
},
"tone": {
"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.",
"type": "integer",
"minimum": 1,
"maximum": 30
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"timezone": {
"type": "string"
},
"addCriteria": {
"description": "Relevance-criterion texts to APPEND (incremental, never replace-all).",
"type": "array",
"items": {
"type": "string"
}
},
"removeCriteria": {
"description": "Criterion ids (from get_project/list_projects) to remove.",
"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)$"
}
}
}
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"title": {
"type": "string"
},
"audience": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"industry": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"maxStoryAgeDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"timezone": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"initializing",
"ready"
]
},
"hasXSource": {
"type": "boolean"
},
"createdAt": {
"description": "ISO 8601 datetime string"
},
"updatedAt": {
"description": "ISO 8601 datetime string"
},
"criteria": {
"type": "array",
"items": {
"type": "object",
"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"
}
},
"required": [
"id",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"audience",
"description",
"tone",
"industry",
"additionalInstructions",
"maxStoryAgeDays",
"timezone",
"status",
"hasXSource",
"createdAt",
"updatedAt",
"criteria"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴betterpost_delete_project(projectId)
Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"deleted"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_list_sources(projectId, limit, offset)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"limit": {
"description": "Max sources to return (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 200
},
"offset": {
"description": "Number of sources to skip; use the returned nextOffset to page.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"counts": {
"type": "object",
"properties": {
"ok": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"failing": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"disabled": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pending": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"byType": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
}
},
"required": [
"ok",
"failing",
"disabled",
"pending",
"byType"
],
"additionalProperties": false
},
"sources": {
"type": "array",
"items": {
"type": "object",
"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": {
"type": "string"
},
"value": {
"type": "string"
},
"name": {
"type": "string"
},
"pending": {
"type": "boolean",
"const": true
},
"ok": {
"type": "boolean"
},
"lastFetchedAt": {
"description": "ISO 8601 datetime string"
},
"failStreak": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"disabled": {
"type": "boolean",
"const": true
},
"lastFetchError": {
"type": "string"
}
},
"required": [
"id",
"type",
"value"
],
"additionalProperties": false
}
}
},
"required": [
"total",
"offset",
"limit",
"returned",
"nextOffset",
"counts",
"sources"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡betterpost_add_source(projectId, value, name, type)
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`).
입력 스키마
{
"type": "object",
"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)$"
},
"value": {
"type": "string"
},
"name": {
"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).",
"type": "string",
"enum": [
"autodetect",
"web-search",
"reddit-search",
"youtube-search",
"x",
"bluesky"
]
}
},
"required": [
"projectId",
"value"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"source": {
"type": "object",
"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)$"
},
"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)$"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"value": {
"type": "string"
},
"lastFetchedAt": {
"description": "ISO 8601 datetime string"
},
"lastFetchSuccess": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"lastFetchError": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failStreak": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"disabled": {
"type": "boolean"
},
"createdAt": {
"description": "ISO 8601 datetime string"
}
},
"required": [
"id",
"projectId",
"name",
"type",
"value",
"lastFetchedAt",
"lastFetchSuccess",
"lastFetchError",
"failStreak",
"disabled",
"createdAt"
],
"additionalProperties": false
},
"fetched": {
"type": "boolean"
},
"storiesAdded": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"note": {
"type": "string"
}
},
"required": [
"source",
"fetched",
"storiesAdded"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴betterpost_remove_source(sourceId)
Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"sourceId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"removed"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_list_stories(projectId, includeHidden)
Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones.
입력 스키마
{
"type": "object",
"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"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"stories": {
"type": "array",
"items": {
"type": "object",
"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)$"
},
"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)$"
},
"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"
}
]
},
"url": {
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"keyPoints": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"quotes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"images": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"url",
"description"
],
"additionalProperties": false
}
},
"relevancy": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"isTimely": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"timelinessReason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contentType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"author": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publicationDate": {
"description": "ISO 8601 datetime string"
},
"status": {
"type": "string",
"enum": [
"pending",
"ready",
"hidden"
]
},
"isManual": {
"type": "boolean"
},
"isHidden": {
"type": "boolean"
},
"createdAt": {
"description": "ISO 8601 datetime string"
}
},
"required": [
"id",
"projectId",
"sourceId",
"url",
"title",
"summary",
"keyPoints",
"quotes",
"images",
"relevancy",
"isTimely",
"timelinessReason",
"contentType",
"author",
"publicationDate",
"status",
"isManual",
"isHidden",
"createdAt"
],
"additionalProperties": false
}
}
},
"required": [
"stories"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡betterpost_add_story(projectId, url, title, summary)
Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.
입력 스키마
{
"type": "object",
"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)$"
},
"url": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"projectId",
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"storyId"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_hide_story(storyId)
Hides a story so generation ignores it. Reversible with unhide_story.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"storyId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"hidden": {
"type": "boolean"
}
},
"required": [
"storyId",
"hidden"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_unhide_story(storyId)
Unhides a previously hidden story so generation can use it again.
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"storyId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"hidden": {
"type": "boolean"
}
},
"required": [
"storyId",
"hidden"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_suggest_topics(projectId, type, count)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 5
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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)$"
},
"topics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"storyCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"examples": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"label",
"storyCount",
"examples"
],
"additionalProperties": false
}
}
},
"required": [
"projectId",
"topics"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_get_usage
Your credit balance, freeze state, and recent spend.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "paid"
},
"creditBalance": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"frozen": {
"type": "boolean"
},
"recentSpendUsd": {
"type": "number"
}
},
"required": [
"kind",
"creditBalance",
"frozen",
"recentSpendUsd"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢betterpost_get_settings(projectId)
Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).
입력 스키마
{
"type": "object",
"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)$"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"contentTypeSettings": {
"type": "array",
"items": {
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"wordLimit": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"projectId",
"type",
"wordLimit",
"additionalInstructions"
],
"additionalProperties": false
}
}
},
"required": [
"contentTypeSettings"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴betterpost_update_settings(projectId, type, wordLimit, additionalInstructions)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"wordLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"projectId",
"type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"wordLimit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"additionalInstructions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"type"
],
"additionalProperties": false
}
},
"required": [
"updated"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪betterpost_expand_coverage(projectId, focus, addAsCriteria, confirmedByUser)
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.
입력 스키마
{
"type": "object",
"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)$"
},
"focus": {
"description": "The topic to get more on (e.g. \"League of Legends\"). Omit to broaden the whole project.",
"type": "string"
},
"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"
}
},
"required": [
"projectId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"criteriaAdded": {
"type": "array",
"items": {
"type": "string"
}
},
"sourcesAdded": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false
}
},
"storiesAdded": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"warming": {
"type": "boolean"
},
"retryAfterMs": {
"type": "number"
}
},
"required": [
"criteriaAdded",
"sourcesAdded",
"storiesAdded",
"warming",
"retryAfterMs"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡betterpost_humanize(text, projectId, type, tone)
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.
입력 스키마
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 30000,
"description": "The text to humanize (max 30,000 characters)."
},
"projectId": {
"description": "Use this project's tone and writing instructions.",
"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": {
"description": "Apply this channel's style rules to the rewrite.",
"type": "string",
"enum": [
"blog",
"newsletter",
"linkedin",
"x",
"bluesky"
]
},
"tone": {
"description": "Tone override; wins over the project tone.",
"type": "string"
}
},
"required": [
"text"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"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",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"creditsCharged": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"text",
"changes",
"inputWords",
"creditsCharged"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}비교
동종 서버 비교
같은 카테고리의 다른 서버와 이 서버를 비교하세요.
커뮤니티
증거