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.
edit_landing_page ~63
Update the title or instructions of a landing page. For AI-powered edits, use vibe_edit_landing_page.
| Name | Type | Req | Description |
|---|---|---|---|
| instructions | string | — | Editor instructions stored for reference |
| slug | string | yes | Landing page slug |
| title | string | — | New title |
No output schema declared.
No examples provided.
edit_post_card ~113
Edit a single carousel card on a post by its 1-based index. Provide title and/or body to update. Set rerender=true to regenerate the visual asset.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | Card body text |
| cardIndex | integer | yes | 1-based card index (1 = first card) |
| number | string | — | Card number label |
| postId | string | yes | Post ID |
| rerender | boolean | — | Regenerate visual assets after edit |
| title | string | — | Card title |
No output schema declared.
No examples provided.
edit_side_page ~64
Update the instructions or metadata of a side page. For section-level edits, use set_side_page_section.
| Name | Type | Req | Description |
|---|---|---|---|
| instructions | string | — | Updated instructions for the AI |
| sideKey | string | yes | Side page key |
| slug | string | yes | Parent landing page slug |
No output schema declared.
No examples provided.
edit_theme ~72
Edit an existing content theme's title or content instructions.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| content | string | — | New content instructions for the theme |
| themeId | string | yes | Theme ID to edit |
| title | string | — | New title for the theme |
No output schema declared.
No examples provided.
enable_weekly_schedule ~47
Enable the weekly content schedule without changing its configuration. The schedule must already be created with set_weekly_schedule.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
No output schema declared.
No examples provided.
generate_blog_post ~330
Generate a full AI blog article. Requires a publicationId (from list_blogs or create_publication). Pass a voiceProfileId to write in a specific person's style (IDs from list_voices). Returns an articleId + operationId; generation is async — poll get_blog_status until completed, then get_blog_article. Use update_blog_article to edit, or publish_blog_article to push to external platforms. To make it live on your PostKing blog, call update_blog_article with status: 'published'.
| Name | Type | Req | Description |
|---|---|---|---|
| attachVisualAsset | boolean | — | Use a brand visual asset (with branding) for the header image |
| brandId | string | — | Brand ID (uses active brand if omitted) |
| generateAiImage | boolean | — | Generate an AI header image |
| imageVariationCount | integer | — | Number of AI image variations to generate (1-5). Only used when generateAiImage is true. |
| primaryKeywords | array | — | SEO keywords to target |
| publicationId | string | yes | Blog publication ID |
| readabilityTarget | string | — | Readability level for the writing, e.g. 'grade-8' |
| secondaryKeywords | array | — | Secondary SEO keywords to target |
| selectedAssetId | string | — | ID of the brand asset to use for the header image |
| skipBrandContext | boolean | — | Omit brand context from the generation prompt when true |
| targetLength | string | — | — |
| topic | string | yes | Topic or working title for the post |
| voiceProfileId | string | — | Voice profile ID for writing style (from list_voices) |
No output schema declared.
No examples provided.
generate_bulk_posts ~120
Generate and schedule multiple posts across a date range in the background.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| days | number | yes | Number of days to fill |
| frequency | string | — | Posting frequency |
| platform | string | yes | Platform: x | linkedin | instagram | threads | facebook |
| postsPerDay | number | — | — |
| times | string | — | Comma-separated posting times, e.g. '09:00,14:00' |
| voice | string | — | Voice profile ID |
No output schema declared.
No examples provided.
generate_connect_link ~61
Generate a secure browser link to connect a social media account. Share this URL with the user to complete OAuth.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| platform | string | — | Target social platform for the connect link |
No output schema declared.
No examples provided.
generate_landing_page ~152
Create and AI-generate a new landing page for the brand. Step 1: Creates the LP record with the given slug. Step 2: Kicks off async AI content generation immediately. Returns { slug, operationId, pollUrl } — poll with get_job(operationId) until state is 'completed' (or 'failed'/'partially_failed'/'cancelled' on error).
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| slug | string | — | URL slug (auto-derived from topic if omitted) |
| topic | string | yes | Topic or product this landing page should be about |
| voiceProfileId | string | — | Voice profile ID for writing style |
No output schema declared.
No examples provided.
generate_post ~540
Generate AI content for a platform. Polls until complete. Deducts 10 credits per variation. To control what the post is about, pass `theme` with a free-text brief (any topic/angle/facts/tone). If you omit `theme`, the topic is RANDOM — so always pass it when the user wants specific content. When variations > 1, ALL variations are returned under a SINGLE postId in the `variations` array — it does NOT create one post per variation. `content` is variation 1 (the primary, already saved on the post). Never call generate_post again to 'get the other variations' — they're all in the response. `originalContent` (if seen elsewhere) is the pre-voice-rewrite draft, not a separate variation. After generating, use create_post to save a chosen variation, then approve_post to schedule it. To repurpose: call repurpose_content first, then create_post with the result, then approve_post. Generation can take 1-5 minutes (longer with multiple variations or voice rewrite); this tool waits for completion. If it ever returns status 'still_generating', DO NOT write the post yourself — poll get_post with the returned postId until operationStatus is 'completed', then use that content. After generation, brand visual options (quote/card templates, brand images, stock photos) are prepared but NOT attached — share viewInBrowser for the visual picker, or call pick_post_visual to attach one. Do not attach a visual unless the user chooses it. The response includes editInVisualEditor: a direct URL to edit the post in the visual editor.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| platform | string | yes | Platform: x | linkedin | instagram | threads | facebook | custom:<charLimit> |
| theme | string | — | Free-text topic/brief describing what the post should be about — include any angle, emphasis, key facts, or tone (e.g. "Launch announcement for our new MCP; emphasize NVIDIA + Stripe + Amotron; B2B a… |
| themeId | string | — | Optional ID of a saved brand theme (from list_themes). Most callers should pass the free-text `theme` instead. If both are given, the free-text `theme` wins. |
| variations | number | — | Number of variations to generate |
| voice | string | — | Voice profile ID to apply |
No output schema declared.
No examples provided.
generate_post_carousel ~96
Generate a carousel PDF for a LinkedIn (or other) post from the post's cards. Returns an asset ID and download URL for the PDF. Requires cards to be set first via set_post_cards or edit_post_card.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | yes | Post ID |
| style | string | — | Card template style name |
| title | string | — | Carousel title override |
| variant | integer | — | Template variant index |
No output schema declared.
No examples provided.
generate_post_visual_options ~222
Fetch available visual options for a post — card templates, library matches, stock photos. Returns a bestPick recommendation plus categorized options per platform. Use pick_post_visual to apply one of the returned options. Returns slim option list with pickArgs by default (medium). Use detail='short' for counts only, 'full' for raw catalog. Includes editInVisualEditor: a direct URL to edit the post in the visual editor (when active brand is set).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | Filter by visual category |
| 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 "medium". Lists… |
| platform | string | — | Filter to a specific platform, e.g. 'linkedin' |
| postId | string | yes | Post ID |
No output schema declared.
No examples provided.
generate_side_page ~363
AI-generates a side page under a parent landing page. Async — kicks off the side-page generator and returns `{ success, operationId, operationRowId, pollUrl, sidePageId }`. This is the GENERATOR (POST /side-pages/generate) — NOT a row creator. Comparison-type briefs may run synchronously and return `sidePageId` directly with no operationId. Two body modes: • freeform: pass `key` + `prompt` (+ optional `keywords`, `selectedSections`, `voiceProfileId`, `sidePageType`). • brief: pass `key` + `brief` (structured outline) + optional `briefId` and `roadmapItemId`. Poll `get_job` until `state` is `completed` (or `failed`/`partially_failed`/`cancelled` on error).
| 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 |
| 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.
generate_text ~511
Generate or rewrite general-purpose, email-style/formal text — follow-up emails, cover letters, outreach messages, formal notes, etc. Polls until complete. This is NOT for social media posts — use generate_post for those. This is also NOT for a simple voice-only rewrite of existing text with no other options — for that, use rewrite_with_voice or rewrite_text instead. Reach for generate_text when you need mode selection (generate vs rewrite), a stated purpose, a target length, or when there's no source text at all (mode='generate'). mode='generate' writes new text from a `prompt` (what to write, e.g. 'a follow-up email after a sales call, polite but direct'). mode='rewrite' rewrites existing `sourceText` into a new form/tone. `purpose` is optional free text describing the goal, e.g. 'win-back email' or 'job application cover letter'. `length` can be short | medium | long, or a specific target word count (20-5000). Supports detail param: short=status+wordCount only, medium=truncated content (500 chars)+wordCount (default), full=raw result including content, aiDetectionScore, burstinessScore, promptLogId, wordCount.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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… |
| length | — | — | Target length: short | medium | long, or a specific target word count (20-5000). |
| mode | string | yes | generate = write new text from a prompt; rewrite = rework existing sourceText |
| prompt | string | — | What to write, required when mode='generate'. Max 4000 chars. |
| purpose | string | — | Free-text goal of the text, e.g. 'win-back email', 'job application cover letter'. Max 200 chars. |
| sourceText | string | — | Existing text to rewrite, required when mode='rewrite'. Max 20000 chars. |
| voiceProfileId | string | — | Voice profile ID to apply. Get IDs from list_voices. |
No output schema declared.
No examples provided.
generate_themes ~88
Generate new content themes using AI. Polls until complete. Deducts credits.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| count | number | — | Number of themes to generate |
| input | string | — | Source text or file path to derive themes from |
| instructions | string | — | Custom instructions, e.g. 'Focus on startup growth' |
No output schema declared.
No examples provided.
get_audience ~201
Fetch the brand's audience intelligence / ICP (ideal customer profile). short = compact summary (name + primaryRoles + top painPoints + persona.role); medium adds positioning + fuller demographics; full = the raw payload (audienceData + positioning + persona + contentModulation). `persona` is the ghostwriter persona ({ role, styleNotes, ... }) and may be null. If the brand has no audience data yet, run website/audience analysis (onboarding) first.
| 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… |
No output schema declared.
No examples provided.
get_blog_article ~241
Fetch a blog article by ID. detail='short' returns id/title/slug/status; detail='medium' adds excerpt+wordCount+previewUrl+editUrl; detail='full' (default) returns the COMPLETE content plus previewUrl (GUI preview link) and editUrl (dashboard editor link). Pass maxContentChars only if you need to bound the body size; omit it to get the whole article.
| Name | Type | Req | Description |
|---|---|---|---|
| articleId | string | yes | Blog article ID |
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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… |
| maxContentChars | integer | — | Optional cap on the returned content body length (full detail only). Omit to return the ENTIRE article body. Use only to bound payload size for small clients. |
No output schema declared.
No examples provided.
get_blog_status ~71
Poll the async generation status of a blog article. Use the articleId returned by generate_blog_post. Status: pending | running | completed | failed.
| Name | Type | Req | Description |
|---|---|---|---|
| articleId | string | yes | Blog article ID returned by generate_blog_post |
| brandId | string | — | Brand ID (uses active brand if omitted) |
No output schema declared.
No examples provided.
get_brand_info ~184
Get a brand's profile. Returns core identity fields plus slim summaries: themes as [{id,title}], voiceProfiles as [{id,name,isActive,optimizedMedium}], blogAuthors as [{id,firstName,lastName}], and postCount/memberCount as numbers. Use list_themes, list_voices, list_blog_authors, list_posts, or get_brand_members for full detail on each.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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.
get_brand_mediums ~75
Read which publishing platforms (mediums) a brand posts to. Read-only counterpart to set_brand_mediums. NOTE: Reddit is NOT a medium — Reddit is a separate repurpose module; use the reddit_* tools or dashboard_link section 'reddit'.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
No output schema declared.
No examples provided.
get_brand_members ~45
List all active members of a brand with their role and user info (id, name, email).
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
No output schema declared.
No examples provided.
get_calendar ~157
View upcoming scheduled posts sorted by date. Returns id+status+scheduledAt by default; use detail='medium' or 'full' for more fields. For a single post use get_post.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| days | number | — | How many days ahead to show |
| 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.
get_credits ~102
Check your current PostKing credit balance and free-tier status.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
get_job ~466
To check whether ONE specific operation you started is finished, pending, or failed, call this with its operationId (the `pollUrl` param accepts a bare operationId + brandId). Do NOT use list_operations to check a specific op. Poll the status of any background Operation by its operationId or pollUrl. Returns the Operation row: { id, kind, state (pending|running|completed|partially_failed|failed|cancelled), brandId, scopeType, scopeId, progress, result, errors, startedAt, finishedAt, createdAt, updatedAt }. Call repeatedly until state is 'completed' or 'failed' (or 'cancelled'). When completed, the payload you want is in `result`; on failure, see `errors`. Pass wait:true to block until the job is done (polls every 3s, up to ~2 min) — preferred over calling repeatedly. Most generate_* and vibe_edit_* tools (including seo_generate_clusters and seo_generate_keywords) return an operationId — use this to poll them. Supports detail param: short=id+kind+state+progress, medium=adds timestamps+resultRef (key IDs from result, no full payload), full=raw including complete result JSONB.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID — required if pollUrl is a bare operationId |
| 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… |
| maxWaitSeconds | integer | — | Wait-window cap in seconds (default ~120s). Only applies when wait=true. |
| pollUrl | string | yes | Full poll URL returned by an async tool, OR a bare operationId (plus brandId param). |
| wait | boolean | — | Block and poll until the job reaches a terminal state (completed/failed/partially_failed/cancelled) or the wait window elapses. Polls every 3s. Use this instead of calling get_job repeatedly yourself. |
No output schema declared.
No examples provided.
get_onboarding_status ~171
STEP 3 of brand onboarding. Polls background analysis + theme generation. detail='short' returns status only; detail='medium' (default) adds audienceSummary+themeCount; detail='full' returns raw data. Poll every ~15s. When done, surface the audience review + themes to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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 "medium". Lists… |
No output schema declared.
No examples provided.
get_post ~221
View the full content and status of a single post. Use detail='short'|'medium'|'full' to control verbosity (default full). Multi-variation posts expose a `variations` array (all variations live on one postId). Output shows the final voice-rewritten content by default; pass includeOriginal=true to also see the pre-rewrite draft. Includes editInVisualEditor: a direct URL to edit the post in the visual editor.
| Name | Type | Req | Description |
|---|---|---|---|
| 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… |
| includeOriginal | boolean | — | Include the pre-voice-rewrite original draft (originalContent). Default false — you normally want the rewritten voice content. |
| postId | string | yes | Post ID |
No output schema declared.
No examples provided.
get_seo_roadmap ~173
View the SEO / GEO content roadmap — suggested blog topics, keywords, and completion status. detail='short' returns stats only; detail='medium' adds slim item list (id+title+status+keyword); detail='full' (default) returns raw response.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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… |
| status | string | — | Filter by status |
No output schema declared.
No examples provided.
get_social_media_rules ~115
Read a brand's per-platform social media content rules (the same rules editable in dashboard Settings → Social media rules). Covers content/structure/engagement/visual-strategy guidance plus secrets, guidelines, content types, things to avoid, and core principles. Call this BEFORE set_social_media_rules so you only change the fields you intend to.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| platform | string | — | Filter to a single platform. Omit to return all 6 platforms. |
No output schema declared.
No examples provided.
get_vibe_edit_status ~150
Poll vibe (AI) edit status. detail='full' (default) includes the result payload; 'short'/'medium' return just state+progress.
| Name | Type | Req | Description |
|---|---|---|---|
| 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… |
| operationId | string | yes | Operation ID from vibe_edit_landing_page |
| slug | string | yes | Landing page slug |
No output schema declared.
No examples provided.
get_weekly_schedule ~158
Retrieve the current weekly content schedule for the active brand. Returns enabled status, lead time, timezone, and per-day platform configs. If no schedule is configured yet, returns suggested defaults. Includes a viewInBrowser link to open the calendar page in the app.
| 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… |
No output schema declared.
No examples provided.
health ~41
Check PostKing API health and local auth state. No authentication required — safe to call first thing in a session to see whether you're logged in and what to do next.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
humanize_text ~71
Apply LLM rewrite and BERT replacements to reduce AI detection signals in text.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| platform | string | — | Platform context: x | linkedin | instagram | threads | facebook |
| text | string | yes | Text to humanize |
No output schema declared.
No examples provided.
import_asset_from_url ~160
Import an asset into the brand library from a public URL. The server fetches and stores the file. Set assetType (e.g. 'google-image') when importing a result surfaced by search_web_images — it is recorded as a tag on the asset to preserve provenance.
| Name | Type | Req | Description |
|---|---|---|---|
| assetType | string | — | Optional source-provenance for the imported asset, e.g. 'google-image' when importing a search_web_images result. Recorded as a tag (not a separate field). |
| brandId | string | — | Brand ID (defaults to active brand) |
| name | string | — | Display name for the asset |
| tags | array | — | — |
| url | string | yes | Publicly accessible URL of the image/video/PDF to import |
No output schema declared.
No examples provided.
import_assets_csv ~150
Batch-import up to 50 assets by providing an array of public URLs. All are added to the brand library. Supports detail param for the returned asset list.
| 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… |
| urls | array | yes | Array of public URLs to import |
No output schema declared.
No examples provided.
import_blog_articles ~191
Import articles from an external blog, RSS feed, or Blogger URL into a PostKing publication as drafts. Returns id+title+slug by default (short); use detail='medium' for wordCount. Inspect individual articles with get_blog_article.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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 | number | — | — |
| publicationId | string | yes | Blog publication ID to import into |
| sourceUrl | string | yes | URL of the blog or RSS feed |
No output schema declared.
No examples provided.
knowledge_create ~235
Async. Create a new knowledge-base item for the brand. Returns { operationId, status } — poll get_job until state=completed. If description or tags are omitted, PostKing auto-generates them from the content. For contentType='json', content must be valid JSON — this tool validates client-side before calling the API. Typically takes ~15–30 s.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| content | string | yes | The full content body. Must be valid JSON string when contentType='json'. |
| contentType | string | yes | Content format: 'text' for prose/markdown, 'json' for structured data. |
| description | string | — | Optional short description. If omitted, PostKing auto-generates one from the content. |
| isGlobal | boolean | — | Mark as account-wide knowledge (shared across all the user's brands) |
| name | string | yes | Human-readable name for the knowledge item (e.g. 'Brand Voice Guidelines'). |
| tags | array | — | Optional tags for filtering (e.g. ['brand', 'voice']). Auto-generated if omitted. |
No output schema declared.
No examples provided.
knowledge_delete ~72
Soft-delete a knowledge-base item. The item is deactivated (isActive=false) and no longer appears in knowledge_list. This action is not reversible via the API.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| itemId | string | yes | KnowledgeBase item ID to soft-delete. |
No output schema declared.
No examples provided.
knowledge_get ~163
Fetch a single knowledge-base item by ID. short {id,name,contentType}; medium adds tags+summary+timestamps; full = raw (includes full content). Use detail='full' to retrieve the complete content body.
| 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 | KnowledgeBase item ID to retrieve. |
No output schema declared.
No examples provided.
knowledge_list ~203
List the brand's knowledge-base items. short {id,name,contentType}; medium adds tags+summary+timestamps; full = raw. Filter by tag, active status, or global scope.
| Name | Type | Req | Description |
|---|---|---|---|
| activeOnly | boolean | — | When true, only return active (non-soft-deleted) items. Defaults to true on the backend. |
| 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… |
| global | boolean | — | When true, only return account-wide (isGlobal) items. |
| tag | string | — | Filter by tag (exact match). |
No output schema declared.
No examples provided.
knowledge_update ~204
Update a knowledge-base item. Minor edits (name, tags, description) return the updated item synchronously. When content changes significantly, PostKing queues an AI description regeneration and returns { operationId, status } — poll get_job until state=completed. For contentType='json', content must be valid JSON — this tool validates client-side before calling the API. Typically takes ~15–30 s.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
| content | string | — | Updated content body. Must be valid JSON when contentType (new or existing) is 'json'. |
| contentType | string | — | Updated content format. Must still match the content body. |
| description | string|null | — | Updated description. Pass null to clear it. |
| itemId | string | yes | KnowledgeBase item ID to update. |
| name | string | — | Updated name. |
| tags | array | — | Replacement tag list. Pass [] to clear all tags. |
No output schema declared.
No examples provided.
list_api_keys ~127
List all API keys on the account. Shows prefix, scope, and revocation status. Does NOT show raw tokens. Lists default short; pass detail=medium/full for more fields.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
list_asset_tags ~36
List all unique tags used across the brand's asset library.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (defaults to active brand) |
No output schema declared.
No examples provided.
list_assets ~213
List assets in the brand's visual library. Filter by type (IMAGE|DOCUMENT|VIDEO|LINK|LOTTIE), tags, or search text. Supports detail param: short=id+type+name, medium=key fields, 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… |
| limit | integer | — | — |
| search | string | — | Full-text search within asset name/description |
| tags | string | — | Comma-separated tags to filter by |
| type | string | — | Asset type filter: IMAGE | DOCUMENT | VIDEO | LINK | LOTTIE |
No output schema declared.
No examples provided.
list_blog_authors ~149
List all blog authors for the active brand. Returns id+name by default (short); use detail='medium' for email/social links. Author IDs can be passed to generate_blog_post or update_blog_article.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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.
list_blog_categories ~152
List all categories for a blog publication. Returns id+name+slug by default (short); use detail='medium' for description+articleCount.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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… |
| publicationId | string | yes | Blog publication ID (from list_blogs) |
No output schema declared.
No examples provided.
list_blogs ~197
LIST tool. Even detail='full' OMITS article bodies (kept bounded) — to read an article's content, call get_blog_article. The number of rows is controlled by `limit` (default 50, max 200), NOT by `detail`; for a 'full list' of titles, raise `limit` and keep detail='short'.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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 | — | — |
| status | string | — | Filter articles by status |
No output schema declared.
No examples provided.
list_brands ~140
List all brands on your PostKing account. Returns id+name+website by default (short). Use detail='medium' for description, 'full' for all raw fields. To zoom into one brand call get_brand_info with detail='full'.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
list_domains ~139
List all custom domains for the active brand. Lists default short; pass detail=medium/full for more fields including SSL status, verification, and connected blogs or landing pages.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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.
list_jobs ~226
To check a SPECIFIC operation's status, call get_job with its operationId — this list only returns the most recent ops and may omit a just-started one. List background jobs for the active brand. Use status='pending' to see in-flight ops, 'completed' to see finished ones. Use get_job with an operationId to poll a specific job — most async tools return an operationId. Supports detail param: short=id+kind+state, medium=6 key fields, full=raw.
| Name | Type | Req | Description |
|---|---|---|---|
| brandId | string | — | Brand ID (uses active brand if omitted) |
| 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 | — | — |
| status | string | — | Filter by job status |
No output schema declared.
No examples provided.
list_landing_pages ~131
Lists landing pages. Default detail='short' (id/slug/name/status). Use view_landing_page for full content.
| 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.