io.github.bitsandtea/postking-mcp
NPM · POSTKING-MCP · 2 COMPONENTS · SCANNED AUG 3
PostKing MCP server for managing brands, generating posts, scheduling content, and publishing blogs.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security37
- Malware scan not yet available for this package.Unverified
- Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 26 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 32233 tokens (~146/item across 220 items; 220 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · postking-mcp
claude mcp add bitsandtea-postking-mcp -- npx -y postking-mcp
codex mcp add bitsandtea-postking-mcp -- npx -y postking-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"bitsandtea-postking-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"postking-mcp"
],
"enabled": true
}
}
} openclaw mcp add bitsandtea-postking-mcp --command npx --arg -y --arg postking-mcp
mcp_servers:
bitsandtea-postking-mcp:
command: "npx"
args: ["-y", "postking-mcp"] {
"mcpServers": {
"bitsandtea-postking-mcp": {
"command": "npx",
"args": [
"-y",
"postking-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 −3
No change was recorded against any check on this day. Supply Chain Security went from 47 to 37. Other categories moved too: Stability & Change Management rose 4.
- 2 Aug 26 +32
- Provenance: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Schema quality: unverified → good ▲ functional
- Stability: unverified → 0.23 ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Maintenance: unverified → pass ▲ functional
- Licence: MIT functional
- 31 Jul 26 −8
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 33
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 96 packages
96 packages in the resolved dependency tree · 96 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
seo_generate_side_page ~426
Generates a side page for a brand's landing page, optionally linked to an SEO cluster (`clusterId`). When linked, the side page surfaces in cluster-context queries and inherits the cluster's keyword targeting — strengthening topical authority that feeds GEO citation patterns. Two body modes: • freeform: pass `key` + `prompt` (+ optional `keywords`, `selectedSections`, `voiceProfileId`, `sidePageType`). • brief: pass `key` + `brief` (structured outline) + optional `briefId` and `roadmapItemId`. Typically takes ~2–5 min. Async — returns `{ success, operationId, operationRowId, pollUrl, sidePageId }`. Poll `get_job` with the operationId until `state` is `completed` (or `failed`/`partially_failed`/`cancelled` on error); comparison-type briefs run synchronously and return `sidePageId` directly. `slug` is the PARENT landing page slug under which the side page is created.
| Name | Type | Req | Description |
|---|---|---|---|
| autoAssignAssets | boolean | — | Auto-assign brand assets to image slots after generation |
| brief | — | — | Brief-mode structured outline. When set, this is the canonical payload. |
| briefId | string | — | Persisted SeoBrief ID — required for comparison-type generation |
| clusterId | string | — | SEO KeywordCluster ID to link this side page to (maps to SidePage.sourceClusterId) |
| key | string | yes | Side-page key (URL slug fragment under the parent LP) |
| keywords | array | — | Freeform-mode: target keywords to weave into the page |
| prompt | string | — | Freeform-mode generation prompt (omit when passing `brief`) |
| roadmapItemId | string | — | Roadmap item ID this side page is fulfilling |
| sidePageType | string | — | Defaults to 'landing'. Use 'comparison' only with a persisted comparison briefId. |
| slug | string | yes | Parent landing page slug |
| voiceProfileId | string | — | Voice profile to write in |
No output schema declared.
No examples provided.
seo_get_brief ~216
Fetch a single SeoBrief by id, including its briefData outline, status, roadmap item, and cluster. Returns full detail by default (complete brief incl briefData). Use detail="medium" for {id, type, status, title, clusterName, briefSummary, sidePageUrl} or detail="short" for {id, type, status}. Use to inspect a brief before refining it with seo_edit_brief or approving it with seo_approve_briefs.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| briefId | string | yes | Brief ID from seo_list_briefs |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "full". Lists d… |
No output schema declared.
No examples provided.
seo_list_briefs ~458
Returns ALL briefs across EVERY status by default — do NOT add a status filter unless the user explicitly asks. `statusBreakdown` gives the per-status counts (match these to the dashboard's brief count). NOTE: briefs whose generation is still in-flight may not appear here yet — check `list_operations` / `get_job` for in-progress generation. Returns short detail by default: {id, type, status, title} per brief. Use detail="medium" for compact summary (clusterId, clusterName, briefSummary, sidePageUrl, generationError, blogArticleId, generatedAt, approvedAt) or detail="full" for raw briefs including briefData outline. To inspect a single brief's full outline, call seo_get_brief with detail="full". Filters: status (CSV — e.g. 'pending_review,approved'), type (CSV — e.g. 'blog,comparison,landing'), clusterId, roadmapItemId, q (cluster-name fuzzy match), limit (default 50, max 200), cursor. Response shape: { count, total, nextCursor, statusBreakdown, detail, briefs: [...] }.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| clusterId | string | — | Filter to briefs under one cluster |
| cursor | string | — | Pagination cursor from a previous page |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
| limit | integer | — | Page size (default 50) |
| q | string | — | Fuzzy match on cluster name |
| roadmapItemId | string | — | Filter to briefs for a single roadmap item |
| status | string | — | CSV of statuses: pending_review | approved | rejected | writing | drafted | published | failed | needs_human_review |
| type | string | — | CSV of brief types: blog | comparison | tool | landing |
No output schema declared.
No examples provided.
seo_list_clusters ~223
Step 5. List clusters so the agent can pick one (or several) to approve before brief and roadmap generation. Returns short detail by default: {id, name, status} per cluster. Use detail="medium" for the full compact summary (pillarKeyword, briefGenerationStatus, briefCount, keywordCount, topKeywords, firstBriefId, description) or detail="full" for raw cluster objects. Full keyword detail (keywordsMeta, contentMix, briefAssignments) is intentionally omitted at short/medium to keep context small — use cluster IDs with approve/reject tools directly.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
No output schema declared.
No examples provided.
seo_list_keywords ~177
List generated keywords for the brand. Useful for auditing between steps. Returns short detail by default: {id, keyword, intent} per keyword. Use detail="medium" for the full compact summary (priority, searchVolume, difficulty, excludedFromClustering, userTags) or detail="full" for raw keyword objects.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
| limit | integer | — | — |
No output schema declared.
No examples provided.
seo_list_results ~224
List the 'Generated Results' (blog articles + side pages + comparisons) the SEO/GEO pipeline has produced — mirrors the dashboard Results tab. Includes BOTH draft and published items. Use kind to filter. This is the canonical 'what content has been generated' list — prefer it over reconstructing results from briefs.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| cursor | string | — | Pagination cursor from a previous page |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
| kind | string | — | Kind of result to filter by |
| limit | integer | — | Page size (default 50, max 200) |
| status | string | — | CSV of statuses to filter by |
No output schema declared.
No examples provided.
seo_list_roadmap ~188
List roadmap items (blog topics queued for writing). Returns short detail by default: {id, title, status} per item. Use detail="medium" for the compact summary (priority, primaryKeywords, clusterId) or detail="full" for raw objects. Call seo_roadmap_get with detail="full" for a single item's complete detail.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
| status | string | — | Filter by status |
No output schema declared.
No examples provided.
seo_publish_article ~116
Step 10. Publish or schedule a roadmap-generated article to a publication. Free-tier choke point — may return FREE_CAP_REACHED with a checkoutUrl.
| Name | Type | Req | Description |
|---|---|---|---|
| articleId | string | yes | Blog article ID |
| brandId | string | — | Brand ID (defaults to active brand) |
| connectionIds | array | — | External publishing-connection IDs (WordPress, Medium, ...) |
| publicationId | string | — | Target publication ID |
| scheduledAt | string | — | ISO 8601 datetime to schedule; omit to publish now |
No output schema declared.
No examples provided.
seo_regenerate_brief ~149
Re-runs L3 brief generation for a single brief (scoped to its cluster). Typically takes ~2–5 min. Async — returns `{operationId, status}`. Poll `get_job` with the operationId until `state` is `completed` (or `failed`/`partially_failed`/`cancelled` on error), then re-fetch with seo_get_brief to see the refreshed briefData. Use when the existing brief's outline is unusable and a structured seo_edit_brief won't recover it.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| briefId | string | yes | Brief ID from seo_list_briefs |
No output schema declared.
No examples provided.
seo_reject_cluster ~62
Reject a single cluster — marks it rejected and detaches its scored keywords. Use when a generated cluster isn't relevant.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| clusterId | string | yes | Cluster ID from seo_list_clusters |
No output schema declared.
No examples provided.
seo_restore_cluster ~51
Restore a rejected cluster back to pending_review so it can be approved again.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| clusterId | string | yes | Cluster ID to restore |
No output schema declared.
No examples provided.
seo_roadmap_delete ~71
Permanently delete a roadmap item. Pass confirm: true to proceed — this is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| confirm | boolean | yes | Must be true to confirm deletion |
| itemId | string | yes | Roadmap item ID to delete |
No output schema declared.
No examples provided.
seo_roadmap_edit ~104
Edit a roadmap item — update its title, status (suggested|in_progress|completed|ignored), or priority.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| itemId | string | yes | Roadmap item ID from seo_list_roadmap |
| priority | integer | — | Priority integer (lower = higher priority) |
| status | string | — | New status |
| title | string | — | New title for the roadmap item |
No output schema declared.
No examples provided.
seo_roadmap_get ~174
View a single roadmap item by ID. Returns full detail by default (raw object). Use detail="medium" for {id, title, status, primaryKeywords, clusterId} or detail="short" for {id, title, status}.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "full". Lists d… |
| itemId | string | yes | Roadmap item ID from seo_list_roadmap |
No output schema declared.
No examples provided.
seo_roadmap_stats ~41
Progress stats for the content roadmap (completed, in-progress, suggested counts).
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
No output schema declared.
No examples provided.
seo_unapprove_cluster ~67
Revert an approved cluster back to pending_review. Fails if briefs have already been generated for this cluster (cannot be reverted once briefs exist).
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| clusterId | string | yes | Cluster ID to unapprove |
No output schema declared.
No examples provided.
seo_write_article ~244
ALTERNATIVE write path — only call this when a brief was NOT approved via seo_approve_briefs (which already auto-generates). If the brief status is `writing`, generation is already in progress — poll the existing operationId with get_job until state is `completed` rather than calling this again. Step 7 (manual path). Draft a full blog article for a roadmap item. Uses credits. Typically takes ~3–8 min per article. Precondition: the brief for this roadmap item must be in status `approved`. If the brief is still `drafted` or `pending_review`, review with `seo_list_briefs` / `seo_get_brief`, refine with `seo_edit_brief`, then approve with `seo_approve_briefs` (which will auto-generate). Returns an articleId that can be reviewed, edited, or published.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| count | integer | — | — |
| roadmapItemId | string | yes | Roadmap item ID from seo_list_roadmap |
| voiceProfileId | string | — | Voice profile ID to write in a specific style |
No output schema declared.
No examples provided.
set_active_brand ~40
Set the active brand for this session. All subsequent tools will use this brand by default.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | yes | The brand ID to activate |
No output schema declared.
No examples provided.
set_brand_mediums ~96
STEP 2 of brand onboarding. Saves the list of platforms the brand publishes on. Call this immediately after `create_brand` or `onboard_brand` and the user has picked platforms. After this, call `get_onboarding_status` every ~15 seconds until it reports `done`.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| mediums | array | yes | Platforms the brand publishes on |
No output schema declared.
No examples provided.
set_landing_page ~94
Overwrite the content and/or metadata of a landing page. Pass content as a string (HTML or markdown). Pass metadata as a JSON object. Returns a versionId — all writes are versioned.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | — | Full page content (HTML or markdown) |
| metadata | object | — | Arbitrary metadata object |
| slug | string | yes | Landing page slug |
| title | string | — | New title |
No output schema declared.
No examples provided.
set_post_cards ~72
Bulk-replace all carousel cards for a post. Provide a full array of card objects with title, body, and optional number.
| Name | Type | Req | Description |
|---|---|---|---|
| cards | array | yes | Full replacement array of card objects |
| postId | string | yes | Post ID |
| rerender | boolean | — | Regenerate visual assets after update |
No output schema declared.
No examples provided.
set_side_page_section ~87
Update the content of a specific section within a side page.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | — | New section content (HTML or markdown) |
| instructions | string | — | AI-guided edit instructions for this section |
| sectionId | string | yes | Section ID from view_side_page |
| sideKey | string | yes | Side page key |
| slug | string | yes | Parent landing page slug |
No output schema declared.
No examples provided.
set_side_page_state ~71
Publish or unpublish a side page. Set published=true to make it live, false to pull it back to draft.
| Name | Type | Req | Description |
|---|---|---|---|
| published | boolean | yes | true = publish, false = unpublish |
| sideKey | string | yes | Side page key |
| slug | string | yes | Parent landing page slug |
No output schema declared.
No examples provided.
set_social_media_rules ~169
Update a brand's social media content rules for ONE platform. By default this MERGES your provided fields into the existing rules (send only what you want to change — other fields are preserved; arrays you provide replace the old array). Set replace=true to overwrite the entire platform ruleset. Valid platforms: linkedin, x/twitter, facebook, instagram, threads, general. Tip: call get_social_media_rules first to see current values.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| platform | string | yes | The platform whose rules you want to update. |
| replace | boolean | — | Overwrite the entire platform ruleset instead of merging. |
| rules | object | yes | Partial or full ruleset to apply. Only provide the fields you want to change when merging. |
No output schema declared.
No examples provided.
set_weekly_schedule ~180
Create or replace the weekly content schedule for the active brand. dayConfigs: array of { dayOfWeek (0=Sun…6=Sat), mediums: [{ medium, postsPerDay }] }. Mediums: x/twitter | linkedin | instagram | facebook | threads | blog. After setting, call enable_weekly_schedule to activate it.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| dayConfigs | array | yes | Array of day configs. Omit a day to have no posts that day. |
| enabled | boolean | — | Whether the schedule is active |
| leadTimeDays | integer | — | How many days ahead to generate content (1–7) |
| timezone | string | — | Timezone for scheduling, e.g. 'Europe/London' |
| voiceProfileId | — | — | Default voice profile ID (optional) |
No output schema declared.
No examples provided.
storyline_add_line_item ~204
Add a new line item (deliverable) to a storyline's strategy. Specify the channel, type, title, description, and a config map (pass {} if no extra config).
| Name | Type | Req | Description |
|---|---|---|---|
| automatable | boolean | — | Whether PostKing can auto-generate this item (defaults to server-side logic) |
| brandId | string | — | Brand ID (defaults to active brand) |
| channel | string | yes | Publishing channel — e.g. 'linkedin', 'twitter', 'blog', 'email' |
| config | object | yes | Channel/type-specific configuration — pass {} if none |
| description | string | yes | What this piece of content should achieve or cover |
| storylineId | string | yes | Storyline ID |
| targetDate | string | — | Target publish date (ISO 8601) |
| title | string | yes | Line-item headline / title |
| type | string | yes | Content type — e.g. 'post', 'article', 'newsletter', 'video' |
No output schema declared.
No examples provided.
storyline_clarify ~102
Run the intake/clarification step for a storyline. The API returns follow-up questions or a readiness signal; call iteratively until the system has enough context. After clarification is complete, call storyline_generate_brief.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID |
| userMessage | string | — | User's response to the last clarifying question (omit for the first call) |
No output schema declared.
No examples provided.
storyline_confirm_brief ~61
Confirm (lock) the brief for a storyline, advancing it to the strategy phase. After confirmation, call storyline_generate_strategy.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_create ~107
Create a new storyline (marketing plan) for the brand. Pass a prompt describing the campaign goal; optionally provide a title. After creation, call storyline_clarify to gather context, then storyline_generate_brief.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| prompt | string | yes | Campaign goal or intent — e.g. 'Q3 product launch for Feature X targeting SMBs' |
| title | string | — | Optional display title (auto-generated if omitted) |
No output schema declared.
No examples provided.
storyline_delete ~72
Archive (soft-delete) a storyline. Pass confirm: true to proceed. Use storyline_restore to reverse this.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| confirm | boolean | yes | Must be true to confirm archiving |
| storylineId | string | yes | Storyline ID to archive |
No output schema declared.
No examples provided.
storyline_delete_line_item ~81
Permanently remove a line item from a storyline's strategy. Pass confirm: true to proceed.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| confirm | boolean | yes | Must be true to confirm deletion |
| itemId | string | yes | Line item ID to delete |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_edit_brief ~112
Apply an AI-driven edit to the current brief using a natural-language instruction. Examples: 'Make the tone more casual', 'Add a proof point about our 99% uptime SLA'. Optionally pass expectedVersion for optimistic concurrency.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| expectedVersion | integer | — | Optimistic-concurrency version (omit to skip version check) |
| instruction | string | yes | Natural-language edit instruction |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_edit_strategy ~89
Apply an AI-driven edit to the current strategy using a natural-language instruction. Examples: 'Add a LinkedIn video post for launch week', 'Remove the influencer outreach line items'.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| instruction | string | yes | Natural-language instruction for editing the strategy and/or line items |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_estimate ~80
Read-only dry-run. Estimate the credits required to execute the storyline without actually running it. Use before storyline_execute to surface the cost to the user for approval. Returns { estimatedCredits, lineItemBreakdown } or similar.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_execute ~92
Async. Execute a storyline — generates content drafts for all selected line items. Returns { operationId, status } — poll get_job with the operationId until state=completed. Typically takes ~3–8 min. Call storyline_estimate first to surface the credit cost before execution.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID to execute |
No output schema declared.
No examples provided.
storyline_generate_brief ~108
Async. Generate the marketing brief for a storyline (positioning, key messages, audience, timing, tone notes). Returns { operationId, status } — poll get_job with the operationId until state=completed. Typically takes ~1–3 min. After completion, review the brief with storyline_get, then call storyline_confirm_brief to advance to strategy.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_generate_strategy ~102
Async. Generate the strategy and line-items for a storyline based on its confirmed brief. Returns { operationId, status } — poll get_job with the operationId until state=completed. Typically takes ~2–5 min. After completion, review with storyline_get_strategy, then optionally edit with storyline_edit_strategy or add/remove line items.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_get ~161
Fetch a single storyline by ID with its full state (brief, strategy, line items, status). Returns full detail by default. Use detail="medium" for a compact summary or detail="short" for {id,title,status}.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "full". Lists d… |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_get_strategy ~163
Fetch the strategy and line items for a storyline. Returns full detail by default (raw strategy + all line items). Use detail="medium" for a compact summary or detail="short" for {id,status} + line-item count.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "full". Lists d… |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_list ~135
List the brand's storylines (marketing plans). short detail {id,title,status}; medium adds isLive, dates, promptSummary; full = raw.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| detail | string | — | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "short". Lists… |
No output schema declared.
No examples provided.
storyline_regenerate_line_item ~90
Async. Re-generate a single line item's content draft. Returns { operationId, status } — poll get_job with the operationId until state=completed. Typically takes ~1–3 min.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| itemId | string | yes | Line item ID to regenerate |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_restore ~45
Restore an archived storyline back to active state.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| storylineId | string | yes | Storyline ID to restore |
No output schema declared.
No examples provided.
storyline_set_brief ~143
Manually set (replace) the full brief for a storyline. Use to provide a human-authored brief or to push back an edited version retrieved via storyline_get. Pass the complete brief object and the current expectedVersion (use 0 when setting from scratch). After setting, call storyline_confirm_brief to advance to strategy generation.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| brief | object | yes | Full brief object — replaces the entire current brief |
| expectedVersion | integer | yes | Optimistic-concurrency version from the current brief (pass 0 when setting from scratch) |
| storylineId | string | yes | Storyline ID |
No output schema declared.
No examples provided.
storyline_update ~140
Update metadata on a storyline: title, live status, or start/end/launch dates. Pass at least one field to change.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| isLive | boolean | — | Whether the storyline is currently live/active |
| launchDate | — | — | ISO 8601 launch date, or null to clear it |
| storylineEndDate | string | — | ISO 8601 end date for the storyline |
| storylineId | string | yes | Storyline ID |
| storylineStartDate | string | — | ISO 8601 start date for the storyline |
| title | string | — | New display title |
No output schema declared.
No examples provided.
storyline_update_line_item ~158
Update a line item on a storyline — select/deselect, retitle, change description, targetDate, or config. Pass only the fields to change.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| config | object | — | Replacement channel/type-specific configuration |
| description | string | — | New description for the line item |
| itemId | string | yes | Line item ID from storyline_get_strategy |
| selected | boolean | — | Include (true) or exclude (false) this line item from execution |
| storylineId | string | yes | Storyline ID |
| targetDate | string | — | New target publish date (ISO 8601) |
| title | string | — | New title for the line item |
No output schema declared.
No examples provided.
suggest_assets_for_post ~67
Get AI-suggested assets from the brand library that match a given post context or topic.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| context | string | yes | Post content or topic to find matching assets for |
| limit | integer | — | — |
No output schema declared.
No examples provided.
tag_asset ~73
Add or remove tags on an asset. Provide addTags and/or removeTags as arrays.
| Name | Type | Req | Description |
|---|---|---|---|
| addTags | array | — | Tags to add |
| assetId | string | yes | Asset ID |
| brandId | string | — | Brand ID (defaults to active brand) |
| removeTags | array | — | Tags to remove |
No output schema declared.
No examples provided.
template_create ~232
Create one or more content templates for the brand. Pass a single template object, or pass the 'templates' array param for bulk creation. If both are supplied, 'templates' (bulk) takes precedence. Returns the created template record(s).
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | Template body with placeholders, e.g. '[HOOK] … [CTA]' (required for single creation). |
| brandId | string | — | Brand ID (defaults to active brand) |
| category | string|null | — | Category label (e.g. 'hook', 'thread', 'cta'). |
| example | string|null | — | An example post filled in using this template. |
| isFavorite | boolean | — | Mark as favorite to surface it first in template lists. |
| pattern | string|null | — | The rhetorical or structural pattern described in plain language. |
| platforms | array | — | Platforms this template is best suited for (e.g. ['x', 'linkedin']). |
| templates | array | — | Bulk-create multiple templates in one call. Overrides the single-template fields when present. |
| title | string | — | Template title (required for single creation). |
No output schema declared.
No examples provided.
template_delete ~53
Permanently delete a content template from the brand. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| templateId | string | yes | ID of the content template to delete. |
No output schema declared.
No examples provided.
template_extract ~121
AI extracts a reusable content template from a pasted post text. Synchronous (seconds) — no polling needed. Pass save=true to also persist the template to the brand's library. Returns the extracted template object; if saved, includes the new template id.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| postText | string | yes | The full text of the post to deconstruct into a reusable template (min 10 chars). |
| save | boolean | — | When true, the extracted template is saved to the brand's template library. |
No output schema declared.
No examples provided.