Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.bitsandtea/postking-mcp

NPM · POSTKING-MCP · 2 COMPONENTS · SCANNED SEP 30

PostKing MCP server for managing brands, generating posts, scheduling content, and publishing blogs.

+18 this week 84 Trust /100
Trust breakdown (7 categories)

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 → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 94 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 25 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_theme" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 221 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.bitsandtea/postking-mcp server?

io.github.bitsandtea/postking-mcp runs locally as an npm package, launched with npx -y postking-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · postking-mcp

# add to Claude Code
claude mcp add bitsandtea-postking-mcp -- npx -y postking-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "bitsandtea-postking-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postking-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "bitsandtea-postking-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postking-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add bitsandtea-postking-mcp -- npx -y postking-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bitsandtea-postking-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "postking-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add bitsandtea-postking-mcp --command npx --arg -y --arg postking-mcp
# ~/.hermes/config.yaml
mcp_servers:
  bitsandtea-postking-mcp:
    command: "npx"
    args: ["-y", "postking-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "bitsandtea-postking-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "postking-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add bitsandtea-postking-mcp -t stdio -c npx -a -y postking-mcp
// mcp.json
{
  "mcpServers": {
    "bitsandtea-postking-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postking-mcp"
      ]
    }
  }
}
Changelog

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.

  • 30 Sept 26 +1
    • Stability: 0.97 → pass security
  • 28 Sept 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Sept 26 +15
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 23 Sept 26 −3
    • Stability: pass → 0.77 functional
  • 22 Sept 26 +1
    • Stability: 0.97 → pass security
  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

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 30 Sept 2026 · Analysed npm/postking-mcp@1.1.7

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 94 packages
Packages resolved 94
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 220 exposed · ~31,224 tokens

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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
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.

NameTypeReqDescription
autoAssignAssetsboolean–Auto-assign brand assets to image slots after generation
brief––Brief-mode structured outline. When set, this is the canonical payload.
briefIdstring–Persisted SeoBrief ID — required for comparison-type generation
clusterIdstring–SEO KeywordCluster ID to link this side page to (maps to SidePage.sourceClusterId)
keystringyesSide-page key (URL slug fragment under the parent LP)
keywordsarray–Freeform-mode: target keywords to weave into the page
promptstring–Freeform-mode generation prompt (omit when passing `brief`)
roadmapItemIdstring–Roadmap item ID this side page is fulfilling
sidePageTypestring–Defaults to 'landing'. Use 'comparison' only with a persisted comparison briefId.
slugstringyesParent landing page slug
voiceProfileIdstring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
briefIdstringyesBrief ID from seo_list_briefs
detailstring–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: [...] }.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
clusterIdstring–Filter to briefs under one cluster
cursorstring–Pagination cursor from a previous page
detailstring–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…
limitinteger–Page size (default 50)
qstring–Fuzzy match on cluster name
roadmapItemIdstring–Filter to briefs for a single roadmap item
statusstring–CSV of statuses: pending_review | approved | rejected | writing | drafted | published | failed | needs_human_review
typestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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…
limitinteger––

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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
cursorstring–Pagination cursor from a previous page
detailstring–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…
kindstring–Kind of result to filter by
limitinteger–Page size (default 50, max 200)
statusstring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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…
statusstring–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.

NameTypeReqDescription
articleIdstringyesBlog article ID
brandIdstring–Brand ID (defaults to active brand)
connectionIdsarray–External publishing-connection IDs (WordPress, Medium, ...)
publicationIdstring–Target publication ID
scheduledAtstring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
briefIdstringyesBrief 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
clusterIdstringyesCluster 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
clusterIdstringyesCluster 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
confirmbooleanyesMust be true to confirm deletion
itemIdstringyesRoadmap 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
itemIdstringyesRoadmap item ID from seo_list_roadmap
priorityinteger–Priority integer (lower = higher priority)
statusstring–New status
titlestring–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}.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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…
itemIdstringyesRoadmap 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).

NameTypeReqDescription
brandIdstring–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).

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
clusterIdstringyesCluster 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
countinteger––
roadmapItemIdstringyesRoadmap item ID from seo_list_roadmap
voiceProfileIdstring–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.

NameTypeReqDescription
brandIdstringyesThe 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`.

NameTypeReqDescription
brandIdstring–Brand ID (uses active brand if omitted)
mediumsarrayyesPlatforms 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.

NameTypeReqDescription
contentstring–Full page content (HTML or markdown)
metadataobject–Arbitrary metadata object
slugstringyesLanding page slug
titlestring–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.

NameTypeReqDescription
cardsarrayyesFull replacement array of card objects
postIdstringyesPost ID
rerenderboolean–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.

NameTypeReqDescription
contentstring–New section content (HTML or markdown)
instructionsstring–AI-guided edit instructions for this section
sectionIdstringyesSection ID from view_side_page
sideKeystringyesSide page key
slugstringyesParent 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.

NameTypeReqDescription
publishedbooleanyestrue = publish, false = unpublish
sideKeystringyesSide page key
slugstringyesParent 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.

NameTypeReqDescription
brandIdstring–Brand ID (uses active brand if omitted)
platformstringyesThe platform whose rules you want to update.
replaceboolean–Overwrite the entire platform ruleset instead of merging.
rulesobjectyesPartial 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
dayConfigsarrayyesArray of day configs. Omit a day to have no posts that day.
enabledboolean–Whether the schedule is active
leadTimeDaysinteger–How many days ahead to generate content (1–7)
timezonestring–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).

NameTypeReqDescription
automatableboolean–Whether PostKing can auto-generate this item (defaults to server-side logic)
brandIdstring–Brand ID (defaults to active brand)
channelstringyesPublishing channel — e.g. 'linkedin', 'twitter', 'blog', 'email'
configobjectyesChannel/type-specific configuration — pass {} if none
descriptionstringyesWhat this piece of content should achieve or cover
storylineIdstringyesStoryline ID
targetDatestring–Target publish date (ISO 8601)
titlestringyesLine-item headline / title
typestringyesContent 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline ID
userMessagestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
promptstringyesCampaign goal or intent — e.g. 'Q3 product launch for Feature X targeting SMBs'
titlestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
confirmbooleanyesMust be true to confirm archiving
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
confirmbooleanyesMust be true to confirm deletion
itemIdstringyesLine item ID to delete
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
expectedVersioninteger–Optimistic-concurrency version (omit to skip version check)
instructionstringyesNatural-language edit instruction
storylineIdstringyesStoryline 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'.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
instructionstringyesNatural-language instruction for editing the strategy and/or line items
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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}.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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…
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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…
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
detailstring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
itemIdstringyesLine item ID to regenerate
storylineIdstringyesStoryline ID

No output schema declared.

No examples provided.

storyline_restore ~45

Restore an archived storyline back to active state.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
briefobjectyesFull brief object — replaces the entire current brief
expectedVersionintegeryesOptimistic-concurrency version from the current brief (pass 0 when setting from scratch)
storylineIdstringyesStoryline 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
isLiveboolean–Whether the storyline is currently live/active
launchDate––ISO 8601 launch date, or null to clear it
storylineEndDatestring–ISO 8601 end date for the storyline
storylineIdstringyesStoryline ID
storylineStartDatestring–ISO 8601 start date for the storyline
titlestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
configobject–Replacement channel/type-specific configuration
descriptionstring–New description for the line item
itemIdstringyesLine item ID from storyline_get_strategy
selectedboolean–Include (true) or exclude (false) this line item from execution
storylineIdstringyesStoryline ID
targetDatestring–New target publish date (ISO 8601)
titlestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
contextstringyesPost content or topic to find matching assets for
limitinteger––

No output schema declared.

No examples provided.

tag_asset ~73

Add or remove tags on an asset. Provide addTags and/or removeTags as arrays.

NameTypeReqDescription
addTagsarray–Tags to add
assetIdstringyesAsset ID
brandIdstring–Brand ID (defaults to active brand)
removeTagsarray–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).

NameTypeReqDescription
bodystring–Template body with placeholders, e.g. '[HOOK] … [CTA]' (required for single creation).
brandIdstring–Brand ID (defaults to active brand)
categorystring|null–Category label (e.g. 'hook', 'thread', 'cta').
examplestring|null–An example post filled in using this template.
isFavoriteboolean–Mark as favorite to surface it first in template lists.
patternstring|null–The rhetorical or structural pattern described in plain language.
platformsarray–Platforms this template is best suited for (e.g. ['x', 'linkedin']).
templatesarray–Bulk-create multiple templates in one call. Overrides the single-template fields when present.
titlestring–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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
templateIdstringyesID 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.

NameTypeReqDescription
brandIdstring–Brand ID (defaults to active brand)
postTextstringyesThe full text of the post to deconstruct into a reusable template (min 10 chars).
saveboolean–When true, the extracted template is saved to the brand's template library.

No output schema declared.

No examples provided.

Common questions

What is the io.github.bitsandtea/postking-mcp server?

io.github.bitsandtea/postking-mcp is listed in the public MCP registry as io.github.bitsandtea/postking-mcp. PostKing MCP server for managing brands, generating posts, scheduling content, and publishing blogs. This page covers its npm package (postking-mcp).

Is the io.github.bitsandtea/postking-mcp server safe to use?

io.github.bitsandtea/postking-mcp scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 30 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.bitsandtea/postking-mcp server expose?

io.github.bitsandtea/postking-mcp exposes 220 tools: login_start, login_complete, logout, whoami, list_brands, and 215 more. Their descriptions and schemas cost roughly 31,224 tokens of context every time the server is loaded.

Is the io.github.bitsandtea/postking-mcp server still maintained?

io.github.bitsandtea/postking-mcp is still listed as active in the MCP registry. We last reached this channel on 30 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.bitsandtea/postking-mcp server under?

io.github.bitsandtea/postking-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.