bdentech avatar

ChiefLab

bdentech/chiefmo-agent

This is an execution loop for agent-driven product launches. It exposes six operators that let agents draft platform posts (HN, Reddit, X, LinkedIn, email), generate assets, stage work for human approval, record proof after publishing, measure real outcomes through public APIs or paste-what-you-see flows, and use those results to pick tomorrow's move. The approval gate lives server-side, not in the prompt, so retry loops and clever rephrasing can't bypass it. Memory persists across conversations: brand voice samples, prior proof ledgers, and channel performance ground each new action in what actually happened. Reach for this when your coding agent shipped a product and needs to run repeatable growth work without turning into an autonomous chaos machine.

tools
45
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
May 12, 2026

Install

From registry metadata
$ npx add-mcp https://api.chieflab.io/api/mcp --name chieflab --header 'Authorization: Bearer ${API_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http chieflab https://api.chieflab.io/api/mcp --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 45 tools

Verified live against the running server on Nov 6, 2026.

chieflab_helpFIRST TOOL — call before anything else when you don't know what ChiefLab does or where to start. Returns the operator menu + workspace state (connectors wired, last run, signup status) + the single next action for this workspace. Cheap, no side effects. After this, call chiefl...

FIRST TOOL — call before anything else when you don't know what ChiefLab does or where to start. Returns the operator menu + workspace state (connectors wired, last run, signup status) + the single next action for this workspace. Cheap, no side effects. After this, call chiefl...

No parameters. Call it with no arguments.

chieflab_get_users_after_buildOutcome-named alias for chiefmo_launch_product. USE WHEN a coding agent just built, shipped, or deployed something and the user asks 'get users', 'find customers', 'make money from this', 'get paying users', 'get eyes on this', 'what now?', or 'how do I launch this?' This is t...11 params

Outcome-named alias for chiefmo_launch_product. USE WHEN a coding agent just built, shipped, or deployed something and the user asks 'get users', 'find customers', 'make money from this', 'get paying users', 'get eyes on this', 'what now?', or 'how do I launch this?' This is t...

Parameters* required
brandobject
Optional inline brand context.
channelsarray
Optional launch channels. Default is auto-selected from the detected product playbook — service agencies skip Product Hunt; B2B SaaS / devtools / consumer / AI-agent products include it; internal t...
goalstring
Desired outcome, e.g. 'Get first 100 users', 'find paying customers', 'get design partners', 'make money from this'.
idempotencyKeystring
Optional dedupe key to prevent duplicate launch preparation.
includeFullArtifactsboolean
Alias for responseShape:"full". Backward-compat with older P29 clients.
outputModestring
context | draft | full | demo. 'demo' is the first-use / YC-demo concise mode — forces 4 punch-list channels (linkedin / x / product_hunt / email), draft rendering, no image gen, scrubbed inline dr...
productDescriptionstring
Short product description if no public URL exists yet.
productUrlstring
Live product URL. Pass either productUrl or productDescription.
repoContextobject
Strongly recommended. Include whatChanged, recentCommits, changedFiles, routes, readme, targetCustomer, launchGoal.
responseShapestring
summary (default, smallest — promotes launchId / launchRoomUrl / publishActionIds / firstResponseScript; per-channel draft bodies live behind the reviewUrl) | compact (per-channel previews + trunca...
tenantIdstring
Optional tenant/end-user id for stored brand context and memory.
chieflab_connect_providerConnect a third-party provider (Zernio, Resend, GA4, Search Console, HubSpot, Stripe, Linear, Notion, Slack) to this workspace. USE WHEN the user wants to wire up publishing, email sending, or analytics readback. For OAuth providers (ga4 / search_console / hubspot) returns an...1 params

Connect a third-party provider (Zernio, Resend, GA4, Search Console, HubSpot, Stripe, Linear, Notion, Slack) to this workspace. USE WHEN the user wants to wire up publishing, email sending, or analytics readback. For OAuth providers (ga4 / search_console / hubspot) returns an...

Parameters* required
provider*string
Provider id: zernio | resend | ga4 | search_console | hubspot | stripe | linear | notion | slack
chieflab_retry_blocked_actionP13 — re-check a blocked publishAction's connector readiness. Returns whether the channel is now ready (so the agent can re-fire chiefmo_publish_approved_post / chiefmo_send_approved_email) or still blocked with the up-to-date connect path. USE WHEN the user has just connected...2 params

P13 — re-check a blocked publishAction's connector readiness. Returns whether the channel is now ready (so the agent can re-fire chiefmo_publish_approved_post / chiefmo_send_approved_email) or still blocked with the up-to-date connect path. USE WHEN the user has just connected...

Parameters* required
actionId*string
The blocked publishAction.id from chiefmo_launch_product.
workspaceIdstring
chieflab_use_manual_fallbackUSE WHEN any launch action carries a manualFallback brief — either because the channel has no automated provider at all (Product Hunt, Hacker News, Reddit, Discord, Slack, Indie Hackers, dev.to, YC Bookface, blog) OR because the channel HAS an automated provider but its connec...5 params

USE WHEN any launch action carries a manualFallback brief — either because the channel has no automated provider at all (Product Hunt, Hacker News, Reddit, Discord, Slack, Indie Hackers, dev.to, YC Bookface, blog) OR because the channel HAS an automated provider but its connec...

Parameters* required
actionId*string
The publishAction.id from chiefmo_launch_product whose manualFallback you want to fetch. Works for both manual-only channels (connector === 'manual_only') and otherwise-automated channels whose con...
channelstring
Override the channel inferred from the action. One of: linkedin | x | email | blog | landing_hero | product_hunt | hacker_news | reddit | discord | slack | indie_hackers | dev_to | ycombinator.
discordCommunitystring
Optional. For channel=discord, which community (the brief tailors tone + announcement-channel pick).
subredditstring
Optional. For channel=reddit, which subreddit (e.g. 'r/SaaS', 'r/AI_Agents'). ChiefLab's brief picks the right post format per sub.
workspaceIdstring
Optional workspace id.
chieflab_set_company_profileP88 — set the workspace's persistent company profile. ChiefLab's pre-P88 brief pipeline was repo-first; without a repo, launches landed thin. P88 lets the founder (or an agent) store the company / product facts ONCE and every subsequent launch grounds in them, even URL-only /...4 params

P88 — set the workspace's persistent company profile. ChiefLab's pre-P88 brief pipeline was repo-first; without a repo, launches landed thin. P88 lets the founder (or an agent) store the company / product facts ONCE and every subsequent launch grounds in them, even URL-only /...

Parameters* required
confidencestring
high | medium | low. Default 'medium'.
profile*object
Partial profile object — top-level keys merge, nested objects shallow-merge, null values remove.
sourcestring
manual | extracted | imported | autodetected. Default 'manual'.
workspaceIdstring
Optional workspace id.
chieflab_get_company_profileP88 — read the workspace's stored company profile. Returns { profile, source, confidence, updated_at }. Use before launch to confirm what ChiefLab will ground in.1 params

P88 — read the workspace's stored company profile. Returns { profile, source, confidence, updated_at }. Use before launch to confirm what ChiefLab will ground in.

Parameters* required
workspaceIdstring
Optional workspace id.
chieflab_list_specialistsP87 — list the specialist agents ChiefLab can delegate to (design / video / research / outreach / seo / analytics). USE WHEN the user asks 'what can ChiefLab do beyond launch posts?' or before calling chieflab_request_specialist. Returns the kind + label for each so the caller...

P87 — list the specialist agents ChiefLab can delegate to (design / video / research / outreach / seo / analytics). USE WHEN the user asks 'what can ChiefLab do beyond launch posts?' or before calling chieflab_request_specialist. Returns the kind + label for each so the caller...

No parameters. Call it with no arguments.

chieflab_request_specialistP87 — delegate to a specialist agent. USE WHEN the launch needs more than copy: a graphic brief (kind='design'), a demo video shot list (kind='video'), a prospective-customer research plan (kind='research'), personalized outreach drafts (kind='outreach'), landing-page SEO reco...5 params

P87 — delegate to a specialist agent. USE WHEN the launch needs more than copy: a graphic brief (kind='design'), a demo video shot list (kind='video'), a prospective-customer research plan (kind='research'), personalized outreach drafts (kind='outreach'), landing-page SEO reco...

Parameters* required
autoCreateActionboolean
Default true. When true, creates an approval-gated action in actionStore so the brief lands in the Launch Room. When false, returns the specialist output without persistence (use for one-off / prev...
briefobject
kind-specific brief fields (asset/channel for design; durationSeconds/platform for video; goal for research; contacts/channel for outreach; url/targetTerms for seo; metrics/channel for analytics)
kind*string
design | video | research | outreach | seo | analytics
runIdstring
Optional. Source run id; the specialist grounds in that launch's brief (productName / audience / market / positioning).
workspaceIdstring
Optional workspace id.
chieflab_force_measurement_dueP93 — admin escape hatch. Forces a proof_ledger row's measurement_due_at into the past so the cron's next tick picks it up. USE WHEN smoke testing the launch → measure → next-move chain without waiting 24h, OR an ops user needs to retry a stuck measurement. Gated by CHIEFLAB_A...3 params

P93 — admin escape hatch. Forces a proof_ledger row's measurement_due_at into the past so the cron's next tick picks it up. USE WHEN smoke testing the launch → measure → next-move chain without waiting 24h, OR an ops user needs to retry a stuck measurement. Gated by CHIEFLAB_A...

Parameters* required
adminToken*string
Required. Must match CHIEFLAB_ADMIN_TOKEN env var.
dueAtstring
Optional ISO timestamp. Defaults to (now - 60s) so the next cron tick picks it up.
proofId*string
proof_ledger row id (from chieflab_record_manual_publish or chieflab_execute_approved_action response).
chieflab_persistence_healthP91 — verify the persistent stores. Probes proof_ledger / publishing_targets / company_profiles tables (Supabase) OR confirms the in-memory fallback. USE WHEN the user just ran the SQL migrations and wants to confirm the API is now using durable storage; OR before a real found...1 params

P91 — verify the persistent stores. Probes proof_ledger / publishing_targets / company_profiles tables (Supabase) OR confirms the in-memory fallback. USE WHEN the user just ran the SQL migrations and wants to confirm the API is now using durable storage; OR before a real found...

Parameters* required
workspaceIdstring
chieflab_query_proof_ledgerP80 — query the persistent proof ledger. USE WHEN the user (or a dashboard) asks 'what has ChiefLab actually shipped for this workspace?' or 'show me the launch history.' Returns the proof rows for executed publishes / sends / manual-posts with the artifact URLs, channels, exe...5 params

P80 — query the persistent proof ledger. USE WHEN the user (or a dashboard) asks 'what has ChiefLab actually shipped for this workspace?' or 'show me the launch history.' Returns the proof rows for executed publishes / sends / manual-posts with the artifact URLs, channels, exe...

Parameters* required
limitnumber
Page size (1-500, default 50).
measurementDueOnlyboolean
When true, returns only rows with measurement_due_at <= now AND measured_at IS NULL. Use this to find what's ready for 24h readback.
runIdstring
Optional. Filter to one run's proofs.
sinceTimestampstring
Optional ISO timestamp; only return proofs published at or after.
workspaceIdstring
Optional workspace id (defaults to auth workspace).
chieflab_set_publishing_targetsP79 — set per-workspace publishing target defaults so chiefmo_approve_action({ autoExecute: true }) doesn't need the agent to pass platform / recipient ids on every call. One-time setup per workspace. channelTargets is a map { linkedin: { accountId }, x: { accountId }, email:...2 params

P79 — set per-workspace publishing target defaults so chiefmo_approve_action({ autoExecute: true }) doesn't need the agent to pass platform / recipient ids on every call. One-time setup per workspace. channelTargets is a map { linkedin: { accountId }, x: { accountId }, email:...

Parameters* required
channelTargets*object
Map of channel → target. Examples: linkedin/x → { accountId: '<zernio_account_id>' }; email → { fromEmail: 'founder@product.com', recipientListId: '<list_id>' }. Pass null as a channel value to rem...
workspaceIdstring
Optional workspace id (defaults to the auth workspace).
chieflab_get_publishing_targetsP79 — read the workspace's stored publishing target defaults. Returns { channelTargets, store }. Useful before launch so the agent can surface 'You haven't connected an Instagram account yet — set it via chieflab_set_publishing_targets' instead of blocking on first auto-execute.1 params

P79 — read the workspace's stored publishing target defaults. Returns { channelTargets, store }. Useful before launch so the agent can surface 'You haven't connected an Instagram account yet — set it via chieflab_set_publishing_targets' instead of blocking on first auto-execute.

Parameters* required
workspaceIdstring
Optional workspace id.
chieflab_suggest_next_moveP75 — Next Move Engine. USE WHEN measurement just came in (chiefmo_post_launch_review fired automatically at 24h, OR the user manually called it) and you want to know what the operator should do next. Reads metrics + the original launch's brief and emits a deterministic sugges...4 params

P75 — Next Move Engine. USE WHEN measurement just came in (chiefmo_post_launch_review fired automatically at 24h, OR the user manually called it) and you want to know what the operator should do next. Reads metrics + the original launch's brief and emits a deterministic sugges...

Parameters* required
channel*string
Channel the measurement is for (linkedin, x, email, landing_hero, product_hunt, hacker_news).
metrics*object
Measurement metrics — engagements, clicks, opens, replies, traffic, conversions, upvotes, rank, etc. Synonyms (engagement / openRate / clickRate / visits) are accepted.
runIdstring
Optional. Source run whose brief grounds the suggestion (so the draft references the actual product / market / audience instead of templates).
workspaceIdstring
Optional workspace id.
chieflab_create_next_move_actionP75 — turn a Next Move suggestion into an approval-gated draft action. USE WHEN you've called chieflab_suggest_next_move and the suggestion's kind is not 'wait' or 'noop'. Creates an actionStore entry with status='awaiting_approval', the suggested draft body inline, and an exe...4 params

P75 — turn a Next Move suggestion into an approval-gated draft action. USE WHEN you've called chieflab_suggest_next_move and the suggestion's kind is not 'wait' or 'noop'. Creates an actionStore entry with status='awaiting_approval', the suggested draft body inline, and an exe...

Parameters* required
channel*string
Channel the measurement was for (used to ground the suggestion).
metrics*object
Same metrics object passed to chieflab_suggest_next_move.
runId*string
Required. The originating run id (the next-move action is tagged with this so the brain can compound launch → measure → next-move chains).
workspaceIdstring
Optional workspace id.
chieflab_regenerate_visual_assetP72 — regenerate a single visual asset (LinkedIn graphic, X graphic, landing hero, etc.) with a different style / fidelity / headline / model. USE WHEN a reviewer hits 'Regenerate' on a launch image in the Launch Room. Reads the original launch's brief from the run metadata, c...12 params

P72 — regenerate a single visual asset (LinkedIn graphic, X graphic, landing hero, etc.) with a different style / fidelity / headline / model. USE WHEN a reviewer hits 'Regenerate' on a launch image in the Launch Room. Reads the original launch's brief from the run metadata, c...

Parameters* required
assetIdstring
Optional original assetId — when present, the regenerated asset reuses the id so the run viewer can swap in place.
brandColorsobject
Optional {primary, accent, bg, text} hex override.
channel*string
Channel the asset is for (linkedin / x / email / landing_hero / etc.).
ctastring
Override the CTA text.
fidelitystring
on_brand | polished | experimental. Defaults to 'on_brand'.
headlinestring
Override the headline rendered into the image.
modelstring
gemini-2.5-flash-image | gemini-3-pro-image-preview. Caller override; defaults to the model the brief's fidelity selects.
runId*string
Launch run id that produced the original asset. Used to look up the LaunchIntelligenceBrief stored on the run.
seedstring
Optional seed string for deterministic layout-hint picking.
stylestring
clean | bold | editorial | playful. Defaults to 'editorial'.
subheadlinestring
Override the subheadline.
workspaceIdstring
Optional workspace id.
chieflab_record_manual_metricsP116 — paste-what-you-see metric fallback for channels without public-API measurement (X, LinkedIn, Email, landing pages, Product Hunt). USE WHEN a published action's channel doesn't have a public-JSON metrics endpoint (anything except hacker_news / reddit) AND the founder is...4 params

P116 — paste-what-you-see metric fallback for channels without public-API measurement (X, LinkedIn, Email, landing pages, Product Hunt). USE WHEN a published action's channel doesn't have a public-JSON metrics endpoint (anything except hacker_news / reddit) AND the founder is...

Parameters* required
actionId*string
The action id to attach metrics to.
forceboolean
Re-record even if metadata.proof.measuredAt is already set. Default false.
metricsobject
Free-form metrics map. Channel-specific keys: x → {impressions, likes, replies, retweets, clicks}; linkedin → {impressions, reactions, comments, reposts, clicks}; email → {sent, opens, clicks, repl...
workspaceIdstring
Optional workspace id.
chieflab_measure_redditP115 — pull a Reddit post's score + comments + upvote ratio + top replies via the public Reddit JSON API and write them to the action's metadata.proof. USE WHEN a published Reddit action is ripe for 24h measurement. Parses subreddit + post id from the publishedUrl, calls https...3 params

P115 — pull a Reddit post's score + comments + upvote ratio + top replies via the public Reddit JSON API and write them to the action's metadata.proof. USE WHEN a published Reddit action is ripe for 24h measurement. Parses subreddit + post id from the publishedUrl, calls https...

Parameters* required
actionId*string
The action id whose publishedUrl points at the Reddit post. Required.
forceboolean
Re-measure even if metadata.proof.measuredAt is already set. Default false.
workspaceIdstring
Optional workspace id.
chieflab_measure_hacker_newsP109 — pull a Hacker News post's score + comments + top replies via the public HN API and write them to the action's metadata.proof. USE WHEN a published Hacker News action is ripe for 24h measurement (checks the publishedUrl on the action, parses the item id, calls the Fireba...3 params

P109 — pull a Hacker News post's score + comments + top replies via the public HN API and write them to the action's metadata.proof. USE WHEN a published Hacker News action is ripe for 24h measurement (checks the publishedUrl on the action, parses the item id, calls the Fireba...

Parameters* required
actionId*string
The action id whose publishedUrl points at the HN post. Required.
forceboolean
Re-measure even if metadata.proof.measuredAt is already set. Default false.
workspaceIdstring
Optional workspace id.
chieflab_review_visual_assetP104 — approve or reject a single visual asset (LinkedIn graphic / X image / landing hero / Product Hunt gallery / carousel slide). USE WHEN a reviewer hits 'Approve' or 'Reject' on a launch image in the Launch Room. Reads the run's stored visualAssets list, updates the matchi...5 params

P104 — approve or reject a single visual asset (LinkedIn graphic / X image / landing hero / Product Hunt gallery / carousel slide). USE WHEN a reviewer hits 'Approve' or 'Reject' on a launch image in the Launch Room. Reads the run's stored visualAssets list, updates the matchi...

Parameters* required
assetId*string
The visual asset id from launchPack.channels[channel].media[*].assetId.
decision*string
approve | reject. Updates the asset's status field.one of approve · reject
reasonstring
Optional. Why rejected (or why approved). Stored in metadata for audit + future brain memory.
runId*string
Launch run id that produced the asset.
workspaceIdstring
Optional workspace id.
chieflab_execute_approved_actionP71 — closed-loop executor wrapper. USE WHEN chiefmo_approve_action just succeeded on an action whose executionMatrix.mode is oauth_connector or api_key_connector AND connectorReady is true. Routes to the right native executor (chiefmo_publish_approved_post for social / chiefm...6 params

P71 — closed-loop executor wrapper. USE WHEN chiefmo_approve_action just succeeded on an action whose executionMatrix.mode is oauth_connector or api_key_connector AND connectorReady is true. Routes to the right native executor (chiefmo_publish_approved_post for social / chiefm...

Parameters* required
actionId*string
The publishAction.id whose executionMatrix you want to execute. The action must be in status='approved' (call chiefmo_approve_action first).
mediaUrlsarray
Optional media URLs (image / video) for social posts. Zernio uploads them to its CDN before posting.
platformsarray
For oauth_connector (social): Zernio platform descriptors, e.g. [{platform: 'linkedin', accountId: '<id>'}]. Required for social posts unless the workspace has a default mapping; the tool refuses w...
recipientsarray
For api_key_connector (email): recipient email addresses. Required for email sends unless the action carries a stored recipient list.
subjectstring
For email sends: subject line override. Defaults to the action's stored subject when present.
workspaceIdstring
Optional workspace id.
chieflab_check_measurement_dueP71 — measurement queue inspector. USE WHEN the agent wants to know which executed actions are ready for their 24h readback (regardless of how they were executed — native connector OR manual paste). Lists actions where metadata.proof.measurementDueAt <= now AND metadata.proof....2 params

P71 — measurement queue inspector. USE WHEN the agent wants to know which executed actions are ready for their 24h readback (regardless of how they were executed — native connector OR manual paste). Lists actions where metadata.proof.measurementDueAt <= now AND metadata.proof....

Parameters* required
runIdstring
Optional. Restrict to one run.
workspaceIdstring
Optional workspace id.
chieflab_skip_next_moveP142 — founder rejects a next-move recommendation without doing it. Captures a reason so the brain learns which kinds of moves don't fit this workspace (e.g. 'we don't cross-post to Reddit on principle' / 'we tried DMs already'). Flips action to rejected with metadata.skipReas...3 params

P142 — founder rejects a next-move recommendation without doing it. Captures a reason so the brain learns which kinds of moves don't fit this workspace (e.g. 'we don't cross-post to Reddit on principle' / 'we tried DMs already'). Flips action to rejected with metadata.skipReas...

Parameters* required
actionId*string
The next-move action id.
reasonstring
Why the founder is skipping this. Used by the brain to avoid suggesting similar moves.
workspaceIdstring
Optional workspace id.
chieflab_mark_action_doneP135 — mark a next-move action as completed when the founder has done the move BUT there's no URL to record (e.g. reply_to_commenters, dm_engagers, mark replies done). Flips the action to executed with metadata.markedManuallyAt + metadata.executedManually=true. The next-move c...3 params

P135 — mark a next-move action as completed when the founder has done the move BUT there's no URL to record (e.g. reply_to_commenters, dm_engagers, mark replies done). Flips the action to executed with metadata.markedManuallyAt + metadata.executedManually=true. The next-move c...

Parameters* required
actionId*string
The next-move action id.
notestring
Optional founder note about what was done. Stored in metadata.markedManuallyNote for the brain to read later.
workspaceIdstring
Optional workspace id.
chieflab_record_manual_publishUSE WHEN the user has manually posted to a channel returned by chieflab_use_manual_fallback (Product Hunt / HN / Reddit / Discord / etc.) and wants to feed the live URL back to ChiefLab so the closed loop continues. Records the URL on the original publishAction (status flips f...5 params

USE WHEN the user has manually posted to a channel returned by chieflab_use_manual_fallback (Product Hunt / HN / Reddit / Discord / etc.) and wants to feed the live URL back to ChiefLab so the closed loop continues. Records the URL on the original publishAction (status flips f...

Parameters* required
actionId*string
The publishAction.id that the user manually published (from chieflab_use_manual_fallback). Required.
notesstring
Optional. Any context on how the post performed in the first hour (early upvotes, top comment, reactions). Persists into the P9 brain.
publishedAtstring
Optional ISO 8601 timestamp. Defaults to now.
publishedUrl*string
The live URL of the manual post (e.g. producthunt.com/posts/<slug>, news.ycombinator.com/item?id=<id>, reddit.com/r/SaaS/comments/<id>).
workspaceIdstring
Optional workspace id.
chieflab_connector_statusUSE WHEN the user just completed a connector OAuth flow and you want to confirm it succeeded — 'did my connection work?', 'is my Zernio/HubSpot/Stripe connected?'. Returns status: pending | connected | failed for the given connectionId.2 params

USE WHEN the user just completed a connector OAuth flow and you want to confirm it succeeded — 'did my connection work?', 'is my Zernio/HubSpot/Stripe connected?'. Returns status: pending | connected | failed for the given connectionId.

Parameters* required
connectionId*string
workspaceIdstring
chieflab_signup_workspaceUSE WHEN the user has no ChiefLab API key yet and you've gotten a 401 / 'authentication required' error from any other tool. Agent-first signup: creates a new workspace and returns the API key inline as `apiKey`. PREFERRED flow: use your filesystem tools to write the apiKey in...3 params

USE WHEN the user has no ChiefLab API key yet and you've gotten a 401 / 'authentication required' error from any other tool. Agent-first signup: creates a new workspace and returns the API key inline as `apiKey`. PREFERRED flow: use your filesystem tools to write the apiKey in...

Parameters* required
agentNamestring
Optional: which AI agent is requesting (Cursor, Claude Desktop, Codex, custom). Logged for support.
contactEmailstring
Optional contact email for the user (used for future notifications).
workspaceLabelstring
Optional human-readable label for the workspace (default: 'default').
chieflab_launch_productOperator: chieflab-launch (primary). Spec v0.1 reference implementation of the orchestrator. End-to-end launch loop: repo-grounded positioning + per-channel drafts (linkedin, x, hn, reddit, email, landing_hero, product_hunt) + image briefs + approval-gated publishActions + sig...10 params

Operator: chieflab-launch (primary). Spec v0.1 reference implementation of the orchestrator. End-to-end launch loop: repo-grounded positioning + per-channel drafts (linkedin, x, hn, reddit, email, landing_hero, product_hunt) + image briefs + approval-gated publishActions + sig...

Parameters* required
brandobject
channelsarray
goalstring
idempotencyKeystring
imagesNeedednumber
productUrlstring
repoContextobject
tenantIdstring
webhookUrlstring
workspaceIdstring
chieflab_redraftUSE WHEN the user says 'make this more casual' / 'shorter' / 'less salesy' / 'add a specific number' / 'redraft this' about a published draft. Pulls the existing brief for the actionId, merges the instruction, returns an updated brief your LLM should render. After rendering ca...4 params

USE WHEN the user says 'make this more casual' / 'shorter' / 'less salesy' / 'add a specific number' / 'redraft this' about a published draft. Pulls the existing brief for the actionId, merges the instruction, returns an updated brief your LLM should render. After rendering ca...

Parameters* required
actionId*string
The publishAction.id from chiefmo_launch_product.
bodystring
Optional. If your LLM already rendered the redrafted body, pass it here and ChiefLab updates the action's brief directly.
instruction*string
Plain-English instruction. 'shorter', 'more casual', 'add the $40 number from our pricing page', etc.
workspaceIdstring
chieflab_set_provider_keyStore a provider API key for THIS workspace. Once stored, ChiefLab uses your key (BYOK — you pay the provider directly, no markup). Without it, ChiefLab uses its own key and bills through with a margin. Providers: gemini (image gen), resend (email), zernio (social publish), an...3 params

Store a provider API key for THIS workspace. Once stored, ChiefLab uses your key (BYOK — you pay the provider directly, no markup). Without it, ChiefLab uses its own key and bills through with a margin. Providers: gemini (image gen), resend (email), zernio (social publish), an...

Parameters* required
apiKey*string
The provider API key (e.g. for Gemini: a Google API key starting with AIza...).
provider*string
gemini | resend | zernio | anthropic | openai
workspaceIdstring
Optional workspace id (defaults to your bearer's workspace).
chieflab_inboxUSE WHEN the user asks 'what came in from my launches?' / 'show me my replies' / 'what's in my inbox?' / 'who responded to the LinkedIn post?'. Returns engagement events for THIS workspace, ordered by recency. Filter by status (new / drafted / approved / sent / dismissed) — de...4 params

USE WHEN the user asks 'what came in from my launches?' / 'show me my replies' / 'what's in my inbox?' / 'who responded to the LinkedIn post?'. Returns engagement events for THIS workspace, ordered by recency. Filter by status (new / drafted / approved / sent / dismissed) — de...

Parameters* required
limitnumber
Max events to return. Default 50.
sinceHoursnumber
Only events received in the last N hours. Default 168 (7 days). Max 720 (30 days).
statusstring
new | drafted | approved | sent | dismissed | all (default: new)
workspaceIdstring
chieflab_statusSESSION-RECOVERY · FIRST CALL when a session starts and the user mentions launch / users / growth / customers / metrics / revenue / marketing / what next / shipping. Returns a command-center bootCard with `headline`, `priority`, `cards[]` (each carries kind + label + literal u...3 params

SESSION-RECOVERY · FIRST CALL when a session starts and the user mentions launch / users / growth / customers / metrics / revenue / marketing / what next / shipping. Returns a command-center bootCard with `headline`, `priority`, `cards[]` (each carries kind + label + literal u...

Parameters* required
currentRepoContextobject
Optional current repo/project context. Helps agents compare recovered loops against the project the user is asking about.
projectNamestring
Optional current project/repo name.
workspaceIdstring
Optional workspace id.
chieflab_bootAlias of chieflab_status. Use as the FIRST tool when an agent session starts on a workspace that already has activity — recovers all open business loops with literal user commands. Same response shape as chieflab_status, same handler. If the user asked to launch the current re...3 params

Alias of chieflab_status. Use as the FIRST tool when an agent session starts on a workspace that already has activity — recovers all open business loops with literal user commands. Same response shape as chieflab_status, same handler. If the user asked to launch the current re...

Parameters* required
currentRepoContextobject
Optional current repo/project context. Helps agents compare recovered loops against the project the user is asking about.
projectNamestring
Optional current project/repo name.
workspaceIdstring
Optional workspace id.
chieflab_verify_installPOST-INSTALL HEALTH CHECK. Call this exactly once after the agent has wired ChiefLab into the runtime (per the bootstrap protocol at https://chieflab.io/bootstrap.txt). Returns { ok, mcpReachable, toolsDiscovered, visibleFrontDoorTools, callableInternalTools, workspaceReady, h...1 params

POST-INSTALL HEALTH CHECK. Call this exactly once after the agent has wired ChiefLab into the runtime (per the bootstrap protocol at https://chieflab.io/bootstrap.txt). Returns { ok, mcpReachable, toolsDiscovered, visibleFrontDoorTools, callableInternalTools, workspaceReady, h...

Parameters* required
workspaceIdstring
Optional workspace id; inferred from bearer auth.
chieflab_brain_summaryUSE WHEN the user asks 'what do you remember about my brand?' / 'show me my brain' / 'what have you learned?'. Returns a plain-English paragraph summarizing what the per-workspace brain has accumulated: launch count, top-performing channels, brand voice patterns from approved...2 params

USE WHEN the user asks 'what do you remember about my brand?' / 'show me my brain' / 'what have you learned?'. Returns a plain-English paragraph summarizing what the per-workspace brain has accumulated: launch count, top-performing channels, brand voice patterns from approved...

Parameters* required
tenantIdstring
Optional tenant scope.
workspaceIdstring
chieflab_search_capabilitiesUSE WHEN your operator needs a capability outside its own scope and wants to find another operator that can fulfill it — 'find me a demo-video capability', 'who can do SEO audits', 'search for design help'. Returns active capability records ranked by recency. Pair with chiefla...3 params

USE WHEN your operator needs a capability outside its own scope and wants to find another operator that can fulfill it — 'find me a demo-video capability', 'who can do SEO audits', 'search for design help'. Returns active capability records ranked by recency. Pair with chiefla...

Parameters* required
capabilitystring
Capability slug to match (exact match — e.g. 'demo_video').
limitnumber
Max results. Default 25.
tagsarray
Tag overlap filter (e.g. ['video', 'demo']).
chieflab_get_capabilityUSE WHEN you have a specific operatorId + capability and want the full machine-readable profile (inputs, outputs, pricing, approval-required flag, endpoint). Pre-flight check before chieflab_create_work_request.2 params

USE WHEN you have a specific operatorId + capability and want the full machine-readable profile (inputs, outputs, pricing, approval-required flag, endpoint). Pre-flight check before chieflab_create_work_request.

Parameters* required
capability*string
operatorId*string
chieflab_create_work_requestUSE WHEN your operator hits a gap it can't fulfill itself and wants to route the work to another operator — 'I need a demo video for this launch', 'request design help for the hero image'. Creates an open work request that other operators can offer against. Once an offer is su...7 params

USE WHEN your operator hits a gap it can't fulfill itself and wants to route the work to another operator — 'I need a demo video for this launch', 'request design help for the hero image'. Creates an open work request that other operators can offer against. Once an offer is su...

Parameters* required
briefobject
Structured brief — { goal, references, constraints, asset_links, etc. }. The more specific, the better the offers.
budgetobject
Optional. { kind: 'max_usd', amount: 50 } | { kind: 'quote' } | { kind: 'free' }.
capabilityNeeded*string
Capability slug to match (e.g. 'demo_video'). Should match a published capability — call chieflab_search_capabilities first if unsure.
deadlinestring
Optional ISO 8601 timestamp.
sourceOperatorIdstring
Optional. The operatorId that's requesting (e.g. 'chieflab-launch').
sourceRunIdstring
Optional. The parent runId this work attaches to (e.g. the launch that needs the asset).
workspaceIdstring
chieflab_approve_action[chieflab_* alias of chiefmo_approve_action] Approve one ChiefMO publish/send action so its executor can fire. USE WHEN the user — in IDE chat — said 'approve <channel>' (e.g. 'approve linkedin', 'approve hn'), 'approve all', 'ship it', 'go ahead', or otherwise greenlit a spec...7 params

[chieflab_* alias of chiefmo_approve_action] Approve one ChiefMO publish/send action so its executor can fire. USE WHEN the user — in IDE chat — said 'approve <channel>' (e.g. 'approve linkedin', 'approve hn'), 'approve all', 'ship it', 'go ahead', or otherwise greenlit a spec...

Parameters* required
actionIdstring
The action id from publishActions[].id in a launch_product response. Preferred.
autoExecuteboolean
P74. When true AND the action's executionMatrix.mode is oauth_connector / api_key_connector / native_api AND the connector is ready, the approve handler immediately invokes chieflab_execute_approve...
idstring
Legacy alias for actionId.
mediaUrlsarray
P74. Optional media URLs for the social post — auto-uploaded to Zernio's CDN before publishing.
platformsarray
P74. For autoExecute on social channels: Zernio platform descriptors, e.g. [{platform: 'linkedin', accountId: '<id>'}]. Required when autoExecute=true and mode=oauth_connector.
recipientsarray
P74. For autoExecute on email: recipient email addresses.
subjectstring
P74. For autoExecute on email: subject line override.
chieflab_continue_launch_loop[chieflab_* alias of chiefmo_continue_launch_loop] Resume a ChiefLab launch loop from runId. USE WHEN an agent has already called chieflab_get_users_after_build / chiefmo_launch_product and needs the exact next action: surface reviewUrl, execute an approved action, wait for me...4 params

[chieflab_* alias of chiefmo_continue_launch_loop] Resume a ChiefLab launch loop from runId. USE WHEN an agent has already called chieflab_get_users_after_build / chiefmo_launch_product and needs the exact next action: surface reviewUrl, execute an approved action, wait for me...

Parameters* required
includeFullArtifactsboolean
Alias for responseShape:"full". Use only for debug/export.
responseShapestring
summary (default, small — returns reviewUrl + openApprovalIds without draft bodies) | full (inline full approval objects; large, debug/export only).
runId*string
The launchId/runId returned by chieflab_get_users_after_build or chiefmo_launch_product.
workspaceIdstring
Optional workspace id. Hosted auth usually supplies this.
chieflab_post_launch_review[chieflab_* alias of chiefmo_post_launch_review] USE WHEN ≥24h has passed since chiefmo_publish_approved_post fired and the user asks 'how did the launch perform?', 'what worked?', 'metrics from my launch'. Closes the loop: pulls 24h+ engagement (likes / comments / views / sha...4 params

[chieflab_* alias of chiefmo_post_launch_review] USE WHEN ≥24h has passed since chiefmo_publish_approved_post fired and the user asks 'how did the launch perform?', 'what worked?', 'metrics from my launch'. Closes the loop: pulls 24h+ engagement (likes / comments / views / sha...

Parameters* required
accountIdsarray
Optional. Specific Zernio accountIds to pull analytics for. Defaults to all accounts that posted in this launch.
lookbackDaysnumber
How many days of history to consider (default 7, max 90).
outputModestring
"context" (default): returns metrics + a brief your LLM renders into the customer-facing recommendation. "full": ChiefLab generates the recommendation server-side.
runId*string
The launchId returned by chiefmo_launch_product. Used to scope analytics to posts from that launch.
chieflab_prepare_next_move[chieflab_* alias of chiefmo_prepare_next_move] USE WHEN the user has just published a launch (or ≥24h post-launch) and asks 'what's next?', 'follow-up post?', 'iterate on this', 'plan day 2'. P13 — turns one launch into a 7-day launch mode: drafts a queue of follow-up actions...4 params

[chieflab_* alias of chiefmo_prepare_next_move] USE WHEN the user has just published a launch (or ≥24h post-launch) and asks 'what's next?', 'follow-up post?', 'iterate on this', 'plan day 2'. P13 — turns one launch into a 7-day launch mode: drafts a queue of follow-up actions...

Parameters* required
channelsarray
Optional. Restrict next-moves to these channels. Defaults to the channels of the prior launch.
horizonstring
"day_2" | "day_3" | "week" — how far to plan. Default: "week" (7-day mode).
runId*string
The prior launchId returned by chiefmo_launch_product. The prepared queue grounds in this run's measurement + memory.
workspaceIdstring
Optional workspace id.
chieflab_publish_approved_post[chieflab_* alias of chiefmo_publish_approved_post] Publish an approved social post (LinkedIn / X / Threads / Instagram / Facebook / Bluesky / TikTok) through the social publishing rail (current adapter: zernio). USE WHEN the user has approved a publishAction from chiefmo_laun...5 params

[chieflab_* alias of chiefmo_publish_approved_post] Publish an approved social post (LinkedIn / X / Threads / Instagram / Facebook / Bluesky / TikTok) through the social publishing rail (current adapter: zernio). USE WHEN the user has approved a publishAction from chiefmo_laun...

Parameters* required
actionId*string
The publishAction.id from chiefmo_launch_product. Required.
content*string
The final rendered post text (your LLM rendered this from the brief in the launch pack).
mediaUrlsarray
Optional. Image/video URLs (or base64 data URLs from launch graphics).
platforms*array
Which platforms + Zernio accountIds to publish to. Get accountIds from chieflab_list_publish_accounts.
scheduleAtstring
Optional ISO 8601. Schedule for later instead of immediate.
chieflab_send_approved_email[chieflab_* alias of chiefmo_send_approved_email] Send an approved launch email through the email sending rail (current adapter: resend). USE WHEN the user has approved an email publishAction from chiefmo_launch_product and you need to fire the send. Strict approval gate (same...7 params

[chieflab_* alias of chiefmo_send_approved_email] Send an approved launch email through the email sending rail (current adapter: resend). USE WHEN the user has approved an email publishAction from chiefmo_launch_product and you need to fire the send. Strict approval gate (same...

Parameters* required
actionIdstring
The publishAction.id from chiefmo_launch_product. Required for the approval gate to fire.
from*string
Sender. Must be a verified Resend domain address (e.g. 'Brand <hi@yourdomain.com>').
htmlstring
HTML body (preferred for inboxing).
replyTovalue
Optional reply-to address(es).
subject*string
textstring
Plain-text fallback (recommended).
to*value
Recipient(s). Single email or array (≤50).

Sponsors

Configuration

CHIEFLAB_API_KEY*secret

Bearer key. Get one at https://chieflab.io/get-key. Or run `npx @chieflab/cli login` after install for a saved-config alternative.

Readme

Details

Repository
github.com/bdentech/chiefmo-agent
Website
chieflab.io
Category
AI & LLM Tools
Package
@chieflab/mcp-server
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related AI & LLM Tools MCP servers

View all
1davidangularme avatarHokmahdavidangularme/hokmah-mcp-serverAI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).0stars
2kroq86 avatarMini Data Engine Runtime Copilotkroq86/data-engineering-runtime-labMCP runtime copilot for health checks, regressions, explainability, and operational memory.0stars
3magneticdogson avatarFixflowmagneticdogson/fixflow-mcpCollective memory for AI agents. One agent solves a bug — every agent gets the fix instantly.0stars
4mdfifty50-boop avatarA2a Bridgemdfifty50-boop/a2a-bridge-mcpAgent-to-agent communication bridge for multi-agent systems0stars
5mighty840 avatarSwarmHaulio.github.mighty840/swarmhaulMulti-agent coordination protocol on Solana. Swarm formation, on-chain settlement, 14 MCP tools.0stars
6mironovisa avatardatamcp — Hosted Model Context Protocol for Databases, APIs, and Agent Memoryio.github.mironovisa/datamcpPostgreSQL, MySQL, OpenAPI/Swagger, and shared Agent Memory with scoped access.0stars