🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

postking-mcp

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postking-mcp

PostKing MCP server — manage brands, generate posts, schedule content, and publish blogs from any MCP client (Claude Desktop, Cursor, etc.)

latest
Source
npmnpm
Version
1.1.7
Version published
Maintainers
1
Created
Source

PostKing MCP Server

npm version License: MIT MCP

The official Model Context Protocol server for PostKing — an AI-powered content platform for social media scheduling, blog publishing, and brand management.

Connect Claude (Desktop, Cursor, or any MCP client) to your PostKing account and manage your entire content operation through conversation — generate posts, schedule them, repurpose URLs into social content, write and publish blog articles, generate landing pages and side pages, run SEO / GEO research and drafting, manage your asset library and weekly posting schedule, handle domains and API keys, and more.

The server exposes 207 tools across 26 modules — full parity with the postking-cli.

Transport note: On the remote HTTP transport (mcp.postking.app), 203 tools are available. The 4 authentication tools (login_start, login_complete, logout, whoami) are omitted on that transport because it uses OAuth bearer tokens rather than device-code login. All other 203 tools are identical across both transports.

Quick start

Claude Desktop

Option A — Via the GUI:

  • Open Claude Desktop → Settings (gear icon) → DeveloperEdit Config
  • This opens claude_desktop_config.json in your default editor
  • Paste the following and save:
{
  "mcpServers": {
    "postking": {
      "command": "npx",
      "args": ["-y", "postking-mcp"]
    }
  }
}
  • Restart Claude Desktop

Option B — Edit the config file directly:

Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) in any text editor, paste the same JSON above, and save.

Once restarted, tell Claude: "Login to PostKing"

Claude Code (CLI)

claude mcp add postking -- npx -y postking-mcp

Hermes

npm i -g postking-mcp
hermes mcp add postking --command postking-mcp

Then in Hermes: "Login to PostKing".

Cursor / other MCP clients

Use the same npx -y postking-mcp command in your client's MCP server config.

Login flow

No API keys to copy. PostKing uses a device login flow:

  • Tell Claude: "Login to PostKing"
  • Claude calls login_start → shows a URL and short code
  • Visit the URL in your browser, log in, approve
  • Tell Claude: "Done"
  • Claude calls login_complete → saves your token to ~/.postking/credentials.json

You never need to log in again. The token is permanent.

What you can do

Authentication

Available on stdio/local transport only. Remote HTTP transport authenticates via OAuth bearer token before the session is created.

ToolDescription
login_startBegin device login — get a URL and code to approve in browser
login_completeFinish login and save token after browser approval
logoutClear locally stored credentials
whoamiReturn the profile of the currently authenticated user (email, plan, credit balance)

Brands

ToolDescription
list_brandsList all brands on your account
set_active_brandSet the default brand for this session
get_brand_infoView brand profile — tone, audience, themes
create_brandCreate a brand manually (step 1 of manual onboarding)
onboard_brandCrawl a website and auto-generate a brand profile + 10 themes (step 1 of website onboarding)
set_brand_mediumsSave the list of platforms the brand publishes on (step 2 of onboarding)
get_brand_mediumsRead which publishing platforms a brand posts to
get_onboarding_statusPoll background audience analysis + theme generation (step 3 of onboarding)

Content themes

ToolDescription
list_themesList all content themes with IDs
generate_themesAI-generate new themes (uses credits)
edit_themeUpdate a theme's title or instructions
delete_themeRemove a theme

Social posts

ToolDescription
generate_postAI-generate a post for a platform
create_postSave a manual post draft to one or more platforms
list_postsList posts filtered by status or platform
get_postView a single post
approve_postApprove and schedule a draft post
schedule_postSet a scheduled time on an existing post
reschedule_postMove a scheduled post to a new time
cancel_postCancel a scheduled post without deleting it
delete_postCancel and delete a post
get_calendarView upcoming scheduled content
generate_bulk_postsFill a date range with AI-generated posts

Repurpose

ToolDescription
repurpose_contentTurn a URL, text, or existing post into new social or blog content

Voice profiles

ToolDescription
list_voicesList available voice profiles
rewrite_with_voiceRewrite text in a specific voice

Social accounts

ToolDescription
check_social_accountsList connected and disconnected platforms
generate_connect_linkGet a secure OAuth link to connect a platform
disconnect_social_accountDisconnect a social account

Reddit

Reddit is a repurpose-to-Reddit workflow, not a scheduled publishing medium. Flow: reddit_generate_poolreddit_get_poolreddit_suggestreddit_rewritereddit_list_posts.

ToolDescription
reddit_get_poolView the brand's saved pool of relevant subreddits, sorted by relevance score
reddit_generate_poolAsync: discover and score relevant subreddits for the brand by crawling Reddit
reddit_global_poolReturn stats on the global subreddit dataset (informational only)
reddit_suggestSync: suggest up to 8 best-fit subreddits for a specific piece of content, each with 2-3 posting angles, promotion mode, and buyer intent
reddit_rewriteAsync: rewrite a blog article or raw content as a native Reddit post for a target subreddit
reddit_list_postsList saved Reddit posts (outputs of reddit_rewrite), cursor-paginated

Blog

ToolDescription
list_blogsList publications and articles (filterable by status)
list_publicationsList publications only
create_publicationCreate a new blog publication
update_publicationUpdate an existing publication's title, description, domain/routing, or layout (partial update)
generate_blog_postAI-generate a full blog article with optional voice
get_blog_articleFetch full article content
get_blog_statusPoll generation/publish status for an article
update_blog_articleEdit title, content, SEO fields, author, category, or status
delete_blog_articlePermanently delete an article
publish_blog_articlePush to WordPress, Medium, Substack, etc.
list_publishing_connectionsList external platform connections
import_blog_articlesImport from RSS feed or Blogger URL
list_blog_authorsList blog authors
create_blog_authorCreate a new blog author
list_blog_categoriesList categories for a publication
create_blog_categoryCreate a new category
get_seo_roadmapView SEO / GEO topic suggestions and completion stats

SEO / GEO

Canonical flow: seo_add_seedsseo_generate_keywordsseo_categorizeseo_generate_clusters → approve clusters → seo_generate_roadmap → review briefs → seo_approve_briefs (auto-fires article generation) → poll get_job → audit & publish.

ToolDescription
seo_add_seedsSeed SEO / GEO research with 3–10 topic keywords
seo_generate_keywordsAsync: expand seeds into a full keyword universe (poll via get_job)
seo_list_keywordsList researched keywords with intent, priority, and volume
seo_edit_keywordEdit a keyword — override intent, adjust priority, set user tags, or exclude from clustering
seo_delete_keywordSoft-delete a single keyword from the research set
seo_categorizeTag keywords by search intent and/or user tags
seo_generate_clustersAsync: group keywords into topic clusters (poll via get_job)
seo_list_clustersList keyword clusters with brief-generation status
seo_bulk_approve_clustersBulk-approve N clusters in one call, kicking off async brief generation for each
seo_approve_clusterApprove a single cluster, gating brief generation for it
seo_reject_clusterReject a single cluster — marks it rejected and detaches its keywords
seo_bulk_reject_clustersBulk-reject N clusters in one call
seo_unapprove_clusterRevert an approved cluster back to pending_review
seo_restore_clusterRestore a rejected cluster back to pending_review
seo_generate_roadmapTurn one or more clusters into a prioritized content roadmap
seo_list_roadmapList roadmap items (blog topics queued for writing)
seo_roadmap_getFetch a single roadmap item
seo_roadmap_editEdit a roadmap item's title, status, or priority
seo_roadmap_deletePermanently delete a roadmap item
seo_roadmap_statsRoadmap completion stats
seo_list_briefsList content briefs across all clusters and statuses
seo_get_briefFetch a single brief including its full structured outline
seo_edit_briefEdit a brief's structured outline or approve/reject it
seo_approve_briefsBulk-approve briefs and auto-fire article generation
seo_regenerate_briefRe-run brief generation for a single brief
seo_list_resultsList generated results (blog articles, side pages, comparisons) from the SEO pipeline
seo_write_articleManual path: draft a blog article from a roadmap item (use only when not going through seo_approve_briefs)
seo_gapFind keyword / topic gaps vs. existing content
seo_competitorCompare keyword coverage against a competitor domain
seo_publish_articlePublish or schedule an SEO-drafted article to a publication
seo_auto_assign_ctaAuto-suggest and assign side-page CTAs to published blog articles
seo_generate_side_pageGenerate a side page optionally linked to an SEO cluster

Landing pages

ToolDescription
list_landing_pagesList all landing pages for a brand
generate_landing_pageCreate and AI-generate a new landing page (async; poll via get_job)
view_landing_pageView a landing page including full section content
view_lp_draftView the current unpublished draft
edit_landing_pageEdit landing page title or instructions
set_landing_pageOverwrite the content and/or metadata of a landing page
regenerate_landing_pageRe-generate a landing page's content using AI (async; poll via get_job)
vibe_edit_landing_pageApply a natural-language AI edit to a landing page (async)
get_vibe_edit_statusPoll vibe-edit job status
publish_landing_pagePublish the current draft
delete_landing_pagePermanently delete a landing page
list_lp_versionsList historical versions of a landing page
view_lp_versionView a specific historical version
list_side_pagesList side pages attached to a landing page
generate_side_pageAI-generate a side page under a parent landing page (async; poll via get_job)
view_side_pageView a side page including sections and rendered HTML
edit_side_pageUpdate the instructions or metadata of a side page
set_side_page_sectionUpdate the content of a specific section within a side page
set_side_page_statePublish or unpublish a side page
delete_side_pageDelete a side page

Weekly schedule

ToolDescription
get_weekly_scheduleFetch the active weekly posting schedule
set_weekly_scheduleConfigure platforms, times, and themes per day
enable_weekly_scheduleTurn the weekly auto-generator on
disable_weekly_scheduleTurn the weekly auto-generator off
delete_weekly_scheduleRemove the schedule entirely
run_weekly_schedule_dayGenerate a single day's posts on demand

Visuals (asset library)

ToolDescription
list_assetsList brand assets (images/videos) with filters
view_assetFetch a single asset's metadata and URL
upload_assetUpload an image/video (base64)
import_asset_from_urlPull an asset from a remote URL
import_assets_csvBatch-import up to 50 assets from a list of public URLs
tag_assetAdd or remove tags on an asset
delete_assetRemove an asset (requires confirm)
list_asset_tagsList all tags used across assets
suggest_assets_for_postGet AI-suggested assets for a specific post
search_stock_imagesSearch stock-photo libraries

Post visuals (cards & carousels)

ToolDescription
generate_post_visual_optionsFetch available visual options for a post (card templates, library matches, stock photos)
regenerate_post_visualRegenerate the visual option set for a post
pick_post_visualSelect a visual for a post on a given platform
clear_post_visualRemove the selected visual from a post
list_post_cardsList the carousel cards attached to a post
edit_post_cardEdit a single carousel card by 1-based index
set_post_cardsBulk-replace all carousel cards for a post
generate_post_carouselRender a carousel PDF from the current cards

Jobs (async poller)

ToolDescription
list_jobsList recent async jobs for the active brand
list_operationsList recent Operations (the newer async-op system) with kind and state filters
get_jobPoll a specific operation by ID or pollUrl; supports wait=true to block until done

API keys (self-service)

ToolDescription
list_api_keysList your PostKing API keys
create_api_keyMint a new API key
revoke_api_keyRevoke an API key (requires confirm)

Domains

ToolDescription
list_domainsList domains with verification and SSL status
add_domainAdd a new custom domain
verify_domainCheck DNS and activate a domain
delete_domainRemove a domain (content is preserved)
connect_domain_to_publicationWire a verified domain to a blog publication

Writing tools

ToolDescription
rewrite_textRewrite text using a voice profile or brand rules
humanize_textReduce AI detection signals in text
check_ai_contentScore text for AI detection likelihood
get_creditsCheck your current credit balance and free-tier status
healthCheck PostKing API health and version (no authentication required)

Storylines (marketing plans)

Canonical flow: storyline_createstoryline_clarify (loop) → storyline_generate_brief (poll) → storyline_getstoryline_edit_briefstoryline_confirm_briefstoryline_generate_strategy (poll) → curate line items → storyline_estimatestoryline_execute (poll).

ToolDescription
storyline_listList the brand's storylines (marketing plans)
storyline_createCreate a new storyline with a campaign goal or intent prompt
storyline_getFetch a single storyline with full state (brief, strategy, line items, status)
storyline_updateUpdate storyline metadata: title, live status, or start/end/launch dates
storyline_deleteArchive (soft-delete) a storyline — reversible via storyline_restore
storyline_restoreRestore an archived storyline back to active state
storyline_clarifyRun the intake/clarification step (iterative Q&A until system has enough context)
storyline_generate_briefAsync: generate the marketing brief — positioning, key messages, audience, timing (poll via get_job)
storyline_set_briefManually set (replace) the full brief for a storyline
storyline_edit_briefAI-edit the brief using natural-language instructions
storyline_confirm_briefConfirm the brief and gate strategy generation
storyline_get_strategyFetch the generated strategy and its line items
storyline_generate_strategyAsync: generate the execution strategy and line item set (poll via get_job)
storyline_edit_strategyAI-edit the strategy using natural-language instructions
storyline_estimateDry-run credit estimate for executing the storyline
storyline_add_line_itemAdd a new content line item to the strategy
storyline_update_line_itemEdit an existing line item (channel, type, title, selected flag, etc.)
storyline_delete_line_itemPermanently remove a line item from the strategy (confirm: true required)
storyline_regenerate_line_itemAsync: regenerate a single strategy line item (poll via get_job)
storyline_executeAsync: generate all selected drafts from the strategy (poll via get_job)

Competitors (intelligence)

Canonical flow: competitor_probecompetitor_probe_statuscompetitor_probe_classifycompetitor_add (poll) → competitor_analyze (poll) → competitor_listcompetitor_get_comparison/recomputecompetitor_get_overview/generate_overview (poll). Namespace: competitor_* (distinct from seo_competitor/seo_gap).

ToolDescription
competitor_listList tracked competitors with status, analysis state, and a dashboard deep-link
competitor_addAsync: batch-add 1–20 competitor domains and trigger crawl + profile analysis (poll via get_job)
competitor_updateUpdate competitor settings — e.g. toggle excludeFromSeoPull
competitor_deleteSoft-delete a tracked competitor (restorable via competitor_update with empty body)
competitor_analyzeAsync: re-analyze pending or failed competitor rows (poll via get_job)
competitor_refreshAsync: refresh all active competitors — re-crawl + re-profile (poll via get_job)
competitor_get_comparisonGet the brand's head-to-head competitive comparison
competitor_recompute_comparisonTrigger a fresh comparison recompute (call after adding/analyzing competitors)
competitor_get_overviewGet the saved competitive landscape overview
competitor_generate_overviewAsync: generate a fresh AI-synthesized landscape overview (poll via get_job)
competitor_comparison_sourcesList SEO keyword sources that feed the competitive comparison
competitor_probeAsync: discover and surface rival domain candidates based on the brand (poll via get_job)
competitor_probe_statusCheck the status of a probe run and list discovered candidates
competitor_probe_classifyClassify a probe candidate as add, skip, or blacklist

Knowledge base

Canonical flow: knowledge_listknowledge_getknowledge_create (poll get_job) → knowledge_updateknowledge_delete.

ToolDescription
knowledge_listList knowledge base items — filter by tag, active status, or global flag
knowledge_createAsync: create a knowledge base item with optional AI enrichment (poll via get_job)
knowledge_getFetch a single knowledge base item with full content and metadata
knowledge_updateUpdate a knowledge base item's name, description, content, or tags
knowledge_deleteSoft-delete a knowledge base item

Brand truth

Atomic facts/observations about a brand (hard facts, audience truths, strategy notes, negative space, content insights, topics) used to ground generation. Canonical flow: brand_truth_listbrand_truth_getbrand_truth_create (LLM extraction decides what to store) → brand_truth_updatebrand_truth_delete.

ToolDescription
brand_truth_listList stored brand truths — filter by type, personaScope, tags, or free-text query
brand_truth_getFetch a single brand truth with full content and metadata
brand_truth_createDescribe facts in plain language; an LLM extraction pipeline decides which atomic truths to store vs skip (returns added + skipped)
brand_truth_updateDirect field edit of a known truth (name, description, content, tags, type, personaScope, pinned) — does not re-run the LLM
brand_truth_deleteDelete a truth and record rejection memory so it stops being re-suggested

Audience / ICP

The brand's audience intelligence (ideal customer profile) mined from its website + onboarding. Canonical flow: get_audiencepreview_audience_edit (discover valid sections) → edit_audience (async LLM ai-edit; poll get_job).

ToolDescription
get_audienceFetch the brand's ICP — structured audienceData, positioning, ghostwriter persona, and contentModulation (short/medium/full)
preview_audience_editRead-only: discover which sections/subsections are valid to edit for this brand before calling edit_audience
edit_audienceAsync LLM ai-edit of the audience/ICP (sections required; poll via get_job) — returns already_running if an edit is in flight

Canonical flow: trends_listtemplate_extract OR (template_list + template_pick) → template_create → existing post-generation tools. Note: trends_list is account-scoped (no brand required).

ToolDescription
trends_listList trending posts by niche and platform — account-scoped, no brand required
template_listList saved content templates for the brand
template_createSave or build a new content template
template_updateUpdate a template's title, content, or favorite flag
template_deleteDelete a saved content template
template_extractAI: deconstruct a trending post into a reusable content template
template_pickAI: score and rank existing templates for a given theme or content goal

Billing (agent wallet + subscription)

Canonical flow (one-off): billing_list_packsbilling_topup → (Stripe Link or browser) → billing_wallet (poll until balance rises). Subscription: billing_list_tiersbilling_subscribe → (human or first-invoice Link) → subscription activates automatically.

ToolDescription
billing_list_packsList available agent credit packs with SKU, price, and credit amount
billing_topupCreate a Stripe Checkout session to top up the agent wallet with a one-off credit pack
billing_walletFetch the agent's prepaid credit balance and recent ledger entries
billing_list_tiersList available PostKing subscription tiers with pricing and monthly credits
billing_subscribeCreate a Stripe Checkout session for a GROWTH, PRO, or ENTERPRISE subscription

Dashboard

ToolDescription
dashboard_linkGet a clickable browser URL to any section of the PostKing dashboard (overview, SEO, posts, blogs, landing pages, reddit, storylines, knowledge, trends, competitors, jobs, etc.)

Guided prompts

The server ships with built-in prompts accessible from the prompt picker in Claude Desktop:

PromptDescription
getting_startedFirst-time setup: login → brand → connect → first post
repurpose_and_scheduleURL/text → repurpose → draft → approve → calendar
connect_social_accountsCheck and connect LinkedIn, X, Instagram, Threads, Facebook
manage_postsView, reschedule, and delete posts
manage_themesGenerate, edit, and organize content themes
blog_publishingGenerate, edit, and publish blog posts
use_voice_profilesApply a voice style to generated or rewritten content
plan_storyline_campaignFull marketing storyline: clarify → brief → strategy → curate → execute
competitor_intelligenceBuild competitive intelligence: probe → add → analyze → comparison → overview
manage_knowledge_baseBrowse, create, update, and soft-delete brand knowledge base items
trends_to_postBrowse trending posts, extract/pick a template, then generate a post

Example workflows

Repurpose a blog post to LinkedIn and X:

"Repurpose https://myblog.com/my-article for LinkedIn and X, using my brand voice"

Generate and schedule a week of content:

"Generate 7 LinkedIn posts using my growth themes, schedule them daily at 9am starting Monday"

Write and publish a blog post:

"Write a 1500-word post about AI productivity tools, publish it to my blog"

Import and repurpose existing content:

"Import the last 20 posts from https://myblog.com/feed and convert the top 5 into LinkedIn posts"

Requirements

Publishing to external platforms

PostKing supports publishing blog articles directly to:

  • WordPress (via REST API)
  • Medium
  • Substack
  • Webflow
  • Any platform with a publishing connection

Set up connections in your PostKing dashboard under Blog → Publishing Connections, then use publish_blog_article from Claude.

Development

git clone https://github.com/bitsandtea/postking-mcp
cd postking-mcp
npm install
npm run build

Test locally by pointing Claude Desktop at the built file:

{
  "mcpServers": {
    "postking": {
      "command": "node",
      "args": ["/absolute/path/to/postking-mcp/dist/index.js"]
    }
  }
}

Environment variables

VariableDefaultDescription
POSTKING_API_URLhttps://try.postking.appOverride the API base URL
POSTKING_API_TOKENSkip device login by providing a token directly

Contributing

Issues and pull requests are welcome. This repo is the MCP client layer only — it calls the PostKing API and exposes tools to any MCP-compatible AI client. If you find a bug, want to add a tool, or improve the prompts, open an issue or PR.

License

MIT

Keywords

mcp

FAQs

Package last updated on 07 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts