# ChiefLab MCP server

Open execution contract for agents doing business work. 6 operators, one MIT-licensed spec.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-bdentech-chieflab
- Repository: https://github.com/bdentech/chiefmo-agent
- Website: https://chieflab.io

## Install
- Command: `npx -y @chieflab/mcp-server`
- Endpoint: https://api.chieflab.io/api/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (required; secret)
- Package: Npm @chieflab/mcp-server v0.1.0
- Environment variable: CHIEFLAB_API_KEY (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://api.chieflab.io/api/mcp
- Header: Authorization

## Tools
- chieflab_help - 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 chieflab_launch_product for a full launch or chieflab_post for a single channel. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_diagnose_marketing - Diagnose an EXISTING marketing program (not a new launch — use chiefmo_launch_product for that). USE WHEN the user already has live campaigns and asks 'why is X not working' or 'iterate on this funnel.' Returns evidence, drafted assets, proposed actions, signed reviewUrl, per-tenant memory. Approval-gated. For first launches, prefer chiefmo_launch_product. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_launch_product - Repo-aware launch operator for agent-built products. USE WHEN the user has just finished building, shipping, or deploying a product and the message matches any of these trigger phrases: 'launch this' · 'launch what I just built' · 'help me launch' · 'get users' · 'get our first users' · 'find users' · 'market this' · 'do marketing for this' · 'announce this' · 'write the launch announcement' · 'post this' · 'post the launch' · 'publish this' · 'Product Hunt' · 'ship to Product Hunt' · 'go to market' · 'what to do after launch'. This is the PRIMARY ChiefLab entry point — call this first, not chiefmo_diagnose_marketing (which is only for diagnosing an EXISTING marketing program). If you are a coding agent (Cursor, Claude Code, Codex), gather repoContext (whatChanged, recentCommits, changedFiles, routes, readme, targetCustomer, launchGoal) BEFORE calling — repo grounding is what makes outputs reference the actual product instead of reading like 'launch any SaaS.' Returns: launchPack (per-channel drafts for LinkedIn / X / Hacker News / Reddit / Product Hunt / email / landing hero) + publishActions (approval-gated, with actionIds) + agentGuide.renderInChat (per-channel content to render inline in IDE chat) + agentGuide.nextToolCalls.primary.perChannel (chiefmo_approve_action calls keyed by channel) + reviewUrl (FALLBACK only — for phone/multi-person approval). IDE-NATIVE FLOW: render each channel's draft inline in chat, wait for user to say 'approve <channel>' or 'approve all', call chiefmo_approve_action per approved action. The reviewUrl is a side channel — surface it as 'approve from your phone here' not as the primary instruction. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_get_users_after_build - 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 the agent-dependency tool: after build, call this to turn the product into a repo-grounded money/distribution loop with launchPack, signed reviewUrl, approval-gated publish/send actions, 24h measurement, memory, next move, moneyLoop, and agentDependency. Gather repoContext first. Route exactly like chiefmo_launch_product; do not use chiefmo_diagnose_marketing for a new product. Endpoint: https://api.chieflab.io/api/mcp
- 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 measurement, measure results, or prepare the next move. This exists because agents are stateless; ChiefLab remembers approval state, actionIds, connector blockers, measurement windows, and next tool calls. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_launch_health - Inspect launch-loop health for a run. USE WHEN an agent or user asks 'what is blocked?', 'what approvals are open?', 'what can I execute?', 'is measurement due?', or 'what should happen next?' Returns open approvals, blocked channels, pending execution, measurement windows, and next moves. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_publish_approved_post - Publish an approved social post (LinkedIn / X / Threads / Instagram / Facebook / Bluesky / TikTok) via Zernio. USE WHEN the user has approved a publishAction from chiefmo_launch_product on the reviewUrl and you need to fire the post. Strict approval gate: returns { reason: 'requires_approval', reviewUrl } if the action isn't approved yet. Once executed, returns the live platform post URL. Money/external-system action — never call this without an approved actionId. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_send_approved_email - Send an approved launch email via 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 shape as chiefmo_publish_approved_post). `from` MUST be on a verified Resend domain — check chieflab_list_email_senders first. Single recipient or short list (≤50). Money/external-system action — once sent cannot be unsent. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_measure_launch_results - Pull post-launch metrics + recommend next iteration. USE WHEN it's been ≥24h since chiefmo_publish_approved_post fired and the user asks 'how did the launch perform' or 'what should we do next.' Returns Zernio engagement (likes / comments / views / shares per account) + GA4 traffic if connected + Search Console queries if connected + a structured next-move recommendation brief your LLM renders into a customer-facing summary. The closing tool in the closed loop: build → launch → publish → measure → iterate. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_create_social_graphics - Generate on-brand social/launch graphics via Gemini 2.5 Flash Image. USE WHEN the user asks for launch images, social graphics, hero images, or 'visuals for the launch.' Note: chiefmo_launch_product already includes graphics inline — only call this directly for ad-hoc image generation outside a launch run. Metered separately (~$0.04 cost / 50 retail credits per image). Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_render_quote_card - Render a deterministic on-brand quote card as PNG using Era (HTML/CSS layout + Playwright render), not diffusion. USE WHEN the user asks for a quote card, founder quote graphic, testimonial graphic, text-heavy launch visual, or brand-precise social graphic. Takes brand context and exact quote text, returns a PNG dataUrl plus layout metadata. Local pipeline; no publish/send side effect. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_connect_provider - 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 authorizeUrl the agent surfaces to the user. For API-key providers (zernio / resend) returns instructions for the set-key tool. Without this, publish/send/measure tools return 'configure first' errors. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_available_channels - P13 — list every channel ChiefLab can ship to (LinkedIn / X / Threads / Bluesky / Instagram / Facebook / TikTok / Product Hunt / Hacker News / Reddit / Discord / Slack / Indie Hackers / DEV.to / YC Bookface / email / blog / GA4 / Search Console / Stripe). Returns the catalog grouped by category (social / community / email / blog / analytics) with each channel's capabilities (publish / schedule / read_metrics / connect / fallback) and providers. USE WHEN the user asks 'what channels can ChiefLab post to?', 'which platforms are supported?', or before calling chiefmo_launch_product to pick the right channels. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_channel_readiness - P13 — for every channel in the catalog, return its readiness state for THIS workspace: { ready, provider, blocker, fix, manualFallback, fallbackKey }. Drives the dashboard connector-readiness panel and the launch-time blockedActions list. USE WHEN the user asks 'which channels can I publish to right now?' or before chiefmo_launch_product to pre-warn about blocked channels. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_get_connect_action - P13 — for a single (typically blocked) channel, return the exact next tool to call to unblock it: chieflab_connect_provider for OAuth/key providers, chieflab_use_manual_fallback for manual-only channels. USE WHEN the user clicks an unblock button or the agent decides which channel to wire next. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_remember_preferred_channel - P13 — record a workspace's per-job preference (e.g. 'this workspace prefers LinkedIn over X for B2B launches', 'always use the founder LinkedIn account, not company page'). Future runs of chiefmo_launch_product read these preferences before picking the channel mix. Persists into the P9 brain. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_retry_blocked_action - 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 a missing provider and the agent needs to know if the action can fire. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_magic_edit - USE WHEN the user wants a quick tweak to existing marketing copy — 'shorter', 'warmer tone', 'change CTA to question', 'more direct', 'remove the third bullet', 'make it founder-led not corporate'. Apply a one-shot edit to a piece of copy. Default outputMode 'context' returns a small edit-brief your agent's LLM applies (~$0 token cost). Pass outputMode 'full' to have ChiefLab re-render server-side (premium credits). Use for rapid iteration without re-running the full diagnose flow. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_create_run - Create a ChiefMO marketing run from a business goal. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_get_run - Get one ChiefMO run by id. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_list_runs - List recent ChiefMO runs. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_list_skills - List internal ChiefMO marketing skills available to the agent. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_list_assets - List ChiefMO generated assets, optionally filtered by run id. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_get_asset - Get one ChiefMO generated asset by id. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_list_actions - List ChiefMO proposed actions, optionally filtered by run id. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_get_action - Get one ChiefMO action by id. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_approve_action - Approve one ChiefMO publish/send action so its executor (publish_approved_post / send_approved_email) 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 specific draft you rendered. Match the user's words to the channel, look up agentGuide.renderInChat[channel].actionId from the launch response, and call this tool with that actionId. This is the IDE-native approval path — no need to push the user to the reviewUrl. Pass `actionId` (preferred) or `id` (legacy alias). Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_approve_run - Approve a ChiefMO run that is awaiting approval. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_reject_run - Reject a ChiefMO run that is awaiting approval. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_extract_brand_dna - USE WHEN the user wants to understand a brand (theirs or a competitor) — 'analyze brand X', 'what is X's positioning', 'extract brand voice from this URL', 'figure out X's content pillars'. Brand DNA discovery: given a URL or brand name, returns category, audience, voice, strategy pillars, competitors, visual cues, content angles, and risks. Use as the first call when you have a brand to work on — every other ChiefMO skill uses the result as context. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_generate_social_posts - USE WHEN the user wants social-only drafts (no full launch) — 'draft an X post', 'write LinkedIn carousels for this', 'give me 5 Instagram captions about X'. NOT for new product launches (use chiefmo_launch_product instead — that returns the same plus on-brand graphics, approval gate, and per-channel briefs). Returns posts with platform-native hooks, captions, hashtags, and posting cadence. Drafts only; scheduling/publishing requires approval via chiefmo_publish_approved_post. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_generate_ad_variants - USE WHEN the user wants paid-ad copy — 'write Google Ads variants', 'Meta ad creative for this campaign', 'split-test 5 headlines for X'. Returns ad variants (angles, headlines, primary text, CTAs) plus a small test plan. For Meta and Google Ads. Drafts only — publishing requires approval and budget rules. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_generate_landing_copy - USE WHEN the user wants landing-page copy — 'write a landing page for X', 'rewrite my hero', 'give me value props for this product', 'FAQ for the pricing page'. Returns ready-to-paste markdown: hero headline, subhead, value props, social proof slots, FAQ, CTA. Page build/publish requires approval and a connected web tool. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_generate_email_sequence - USE WHEN the user wants an email-only sequence (not a full launch) — 'draft a welcome sequence', 'win-back emails for churned users', 'nurture series for new signups'. Returns 4-email skeleton with subject line ladder, send timing (Day 0 / 2 / 5 / 9), and segmentation notes. Drafts only — sending requires approval and a connected ESP. For launch emails specifically, use chiefmo_launch_product (it bundles email + social + landing in one approval flow). Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_prepare_weekly_report - Compose a weekly marketing report with KPI deltas, what changed and why, wins, risks, and recommended next 3 actions. Grounded in connector snapshots when available. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_diagnose_anomaly - Analytics anomaly explainer. Given a metric drop or spike (e.g. 'Search Console clicks down 30%'), ranks likely causes and proposes safe corrective actions. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_draft_blog_post - Draft a full repo-aware blog post (title, slug, meta description, body, internal links, OG image prompt). Manual mode emits markdown you paste into your CMS; with GitHub connected, ChiefLab can commit the post directly. With Search Console / GA4 connected, the post is tracked after publish. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_seo_brief - Generate a Search Console-grounded SEO refresh brief: which pages to refresh, which queries to target, content clusters to build, internal-link opportunities. Manual mode emits a structural brief; with Search Console connected, every recommendation cites actual impression / CTR / position numbers. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_repurpose_content - Take a single source asset (launch post, blog, demo, customer proof) and emit platform-tuned variants for LinkedIn, X thread, Threads, and email. Each variant leads with a different hook — not paraphrases. Manual mode pastes; connected mode (Zernio/Resend) can publish on a cadence after approval. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_design_experiment - Convert a marketing question into a runnable experiment: hypothesis, variants, primary success metric, sample-size guidance, and kill criteria. Use BEFORE shipping a new test so you have a stop rule. Manual mode is the entire spec; with GA4/Search Console connected, baselines are pulled live. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_plan_content_calendar - Build a 4-week multi-channel content calendar (channel cadence, deadlines, approval gates, re-plan triggers). Manual mode emits markdown tables; connected mode (Zernio/Resend) auto-fires approved items on their scheduled dates. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_monitor_competitors - Snapshot competitor positioning, recent content, and pricing signals. Returns response-angles per competitor and white-space opportunities for the brand. Re-run monthly; deltas surface in chieflab_competitor_watch. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_record_persona - Capture an audience/persona memory entry: ICP, segments, top objections, proof points, banned claims, winning angles. Future runs ground against this memory. Use early in onboarding, then refresh when your understanding shifts. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_synthesize_marketing_analytics - Cross-channel marketing analytics synthesis. Pulls social / email / blog / GA4 / Search Console signals into a single 'what worked, what didn't, what to do next' story. Ends with 3 prioritized actions and memory updates to feed forward. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_check_claims - Scan a draft (post / email / blog / ad / landing copy) for unsupported claims BEFORE publish. Each concrete claim is checked against the company brain (repo facts, proof assets, brand voice). Returns ranked list with status (verified | unsupported | risky) and suggested fixes. Run as a publish gate. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_memory_diff - Report what the company brain has learned in a window. New repo facts, proof points, channel performance, persona/competitor updates. Use as a weekly review or to show stakeholders why the moat compounds. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_record_proof - Capture a structured proof asset (testimonial, metric, customer quote, case study, launch result, review, press) into the company brain. Future runs can cite it instead of inventing claims. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_use_manual_fallback - 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 connector isn't wired yet for this workspace (LinkedIn / X without a Zernio key; email without a Resend key + verified sender domain). Pattern: use the inline fallback NOW to ship the launch manually; connect the provider LATER (each fallback returns an upgradePath with the exact connector wiring) so the same action publishes automatically on the next launch. Returns: paste-ready title + body, per-channel checklist (best time, format, first-comment script), capture-URL-after instruction, measurement template for the 24h readback, and the optional upgradePath when automation is available. Converts a 'blocked' channel into a 5-minute human-in-the-loop ship. Approval-gated upstream: the originating publishAction must already be 'approved' on the reviewUrl before this tool returns the brief. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_record_manual_publish - 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 from 'approved' to 'executed_manually'), persists a proof_asset to the P9 company brain, and queues 24-hour metrics readback via chiefmo_post_launch_review. Without this tool, manually-posted channels are lost to ChiefLab's measurement loop. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_record_brand_voice - Update the brand-voice facet of the company brain: banned phrases (never use), preferred claims (always available), tone descriptors, voice examples. Run after rejecting a draft or after a founder says 'don't write it like that.' Future runs inherit these constraints automatically. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_record_repo_fact - Persist one structured product fact (feature / route / pricing / integration / changelog / screenshot / metric / constraint) extracted from the repo. Older facts with the same (kind, name) are auto-superseded. Run on every launch so the brain stays current with the codebase. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_extract_repo_facts - Pull structured product facts from the supplied repoContext (commits, changed files, routes, README, pricing) and emit a list ready to persist. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_record_channel_result - Record one channel-performance row (channel × hook × format × CTA × outcome × metric). Powers the 'what's worked / hasn't' block in future plans. Outcome is one of: won | lost | inconclusive | killed. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_company_brain - Return the full rendered company brain for a workspace (brand voice + repo facts + personas + proofs + channel performance + competitor watch + voice samples). Use to inspect what ChiefLab knows, debug grounding, or pipe into a custom prompt. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_connect_connector - USE WHEN the user wants to connect a third-party data source via OAuth (HubSpot, Stripe, Intercom, Linear, etc.). Returns an authorize URL — surface to user → they grant access → connector becomes live for the workspace and ChiefLab reads real data instead of mock snapshots. NOTE: only chieflab_connect_publish_account (Zernio for social posting) is fully wired in v1; other connectors are scaffolded but the live-data path may be partial. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_connector_status - 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. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_connectors - USE WHEN you want to know which third-party connectors are connected for this workspace — 'what data sources do I have wired?', 'is X connector live?'. Returns all connectors across all operators with OAuth-live status (live data vs. mock snapshots). Endpoint: https://api.chieflab.io/api/mcp
- chieflab_signup_workspace - 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 into the user's MCP config (see mcpConfigSnippet for the patch shape), then ask the user to restart their runtime once. After restart, re-call the original tool. FALLBACK: if you can't write to the config file, surface the included deliveryUrl to the user — they click, see the key, paste it manually. URL expires in 1 hour, single-use, IP-rate-limited (5/IP/hr). No login form. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_publish_accounts - USE WHEN you need accountIds before publishing — 'which social accounts are connected?', 'list my LinkedIn/X/Instagram accounts'. Returns connected Zernio accounts (LinkedIn, X, Threads, Instagram, Facebook, etc.) with the accountIds you'll pass to chiefmo_publish_approved_post. Requires ZERNIO_API_KEY in env or via chieflab_set_zernio_key. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_connect_publish_account - USE WHEN the user wants to connect a social account (LinkedIn / X / Threads / Instagram / Facebook / Bluesky / TikTok) so chiefmo_publish_approved_post can post to it. Returns a Zernio OAuth URL — surface to user → they click → connect their account → it appears in chieflab_list_publish_accounts. Standard agent flow: call this with platform='linkedin' → get authUrl → surface to user → user connects → call chieflab_list_publish_accounts to confirm + grab accountId → pass accountId to chiefmo_publish_approved_post. NOTE: Zernio requires a profileId (the workspace container). If you don't pass one, the call fails with 'Profile ID required'. Get it from app.zernio.com/settings/profile, or call chieflab_list_publish_accounts first — the accounts response includes profileId on each item. Endpoint: https://api.chieflab.io/api/mcp
- 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 / shares / follower delta) for posts in the launch run + recommends next iteration (rewrite, refresh creative, double down, pause). Returns per-account analytics + top posts + best-time-to-post + a structured next-move recommendation brief. Endpoint: https://api.chieflab.io/api/mcp
- 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 (day 2 reply post, day 3 case study, day 5 metrics share, day 7 retrospective) grounded in the prior launch's runId, the per-tenant brand voice + repo facts + channel performance from the P9 company brain, and the prior recommendation (so the next move doesn't repeat the last one). Returns a draft queue + signed reviewUrl + the standard agentGuide block. Each next-move action lands in awaiting_approval; nothing fires without explicit human approval. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_set_zernio_key - USE WHEN the user wants to bring their own Zernio account (per-workspace social publishing) instead of using the platform default. Stores the Zernio API key encrypted, then chieflab_list_publish_accounts / chieflab_connect_publish_account / chiefmo_publish_approved_post / chiefmo_post_launch_review all use this key for the workspace. Get a Zernio API key from zernio.com. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_email_senders - USE WHEN you need to know which `from` addresses chiefmo_send_approved_email will accept — 'list my verified email domains', 'which sender can I use?'. Returns verified Resend sender domains for the workspace. Requires RESEND_API_KEY (env-default or set via chieflab_set_resend_key). Endpoint: https://api.chieflab.io/api/mcp
- chieflab_set_resend_key - USE WHEN the user wants to bring their own Resend account (per-workspace email sending) instead of the platform default. Stores the Resend API key encrypted, then chiefmo_send_approved_email + chieflab_list_email_senders use this key for the workspace. Get a Resend API key from resend.com/api-keys. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_create_tenant - USE WHEN you (an AI product builder) are managing multiple end-users and want isolated brand context per user — 'create a tenant for my new customer', 'set up Acme Co as a tenant', 'multi-tenant brand isolation'. Each tenant gets its own brand context, voice samples, memory, scoped under your workspace. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_tenants - USE WHEN you want to see which end-users (tenants) are configured in this workspace — 'list my tenants', 'show me all customers I've onboarded'. Returns active tenants by default; pass status='paused'|'archived' for others. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_set_tenant_context - USE WHEN onboarding a new tenant or refreshing their brand — 'set up brand context for tenant X', 'update Acme Co's voice and pillars'. Upsert: stores brand name, audience, voice, strategic pillars, competitors, content angles, positioning risks. Every operator output for this tenant grounds against this context. Pair with chieflab_create_tenant. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_record_voice_sample - USE WHEN the user approves or rejects a draft and you want the next run to learn — 'remember this is the right tone', 'never write like this again', 'add this email as a reference'. Stores approved/rejected examples per tenant; future operator prompts ground against approved tone and avoid rejected patterns. The 'rejection becomes memory' loop. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_record_rendered_copy - USE WHEN your agent's LLM has rendered the final copy from a launch-pack brief and you want the human reviewer to see the rendered text on the reviewUrl (not the brief). Closes the orchestration loop: ChiefLab returns briefs (cheap), your LLM renders (high-quality), this tool writes the rendered copy back so reviewers approve real text, not prompts. Pass the assetId from launchPack.channels[channel].assetId (or any other ChiefLab asset). Idempotent — second call replaces the prior rendered body. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_playbooks - List the ChiefLab launch playbooks (devtool / saas / ai_agent / marketplace / internal_tool / consumer) — what's the default channel mix, default angle, ICP, proof expectations, risks-to-avoid for each. Use to show the user options before calling chiefmo_launch_product, or to pick productType explicitly when auto-detection is wrong. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_score_launch_pack - Re-score a launch pack on six quality dimensions (specificity / claim_risk / channel_fit / icp_clarity / proof / readiness). Use AFTER chieflab_record_rendered_copy populates rendered bodies — the original chiefmo_launch_product call returned a score for the briefs, but rendered copy needs its own quality check before approval. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_save_launch_template - Save a launch's shape (channels + angle + brand + default repo context) as a reusable template. Use AFTER a launch performs well so the next one in the same shape skips re-asking. The current run's productUrl and assets are NOT saved — just the orchestration shape. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_launch_templates - List launch templates saved for this workspace (most recently created first). Pass label of one to chiefmo_launch_product as templateId for a one-call repeat launch. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_workspace_metrics - Get scale metrics for a workspace — launches, repeat-launch rate, approval rate, publish rate, measured-outcome rate, open blockers, cadence breakdown (24h/3d/7d). Use for the scale dashboard or 'how is this account doing' checks. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_connector_setup_steps - Get step-by-step JIT setup instructions for a connector (zernio | resend | ga4 | search_console | github | cms). Returns prerequisites + ordered steps + verification commands. Use when a launch pack reports a connectorBlocker — pipe these steps to the user. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_customer_success_queue - Internal CS-ops queue: lists blocked launches, missing-approval items, recent connector failures, and due followups across the workspace. Use to triage what's stuck. Filterable by bucket. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_workspace_members - List workspace members with roles (owner / approver / editor / viewer). Use for team management and to see who can approve publishes. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_set_workspace_member - Add or update a workspace member's role (owner | approver | editor | viewer). Returns the updated member record. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_launch_product - 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 + signed reviewUrl + 24h measurement queue. Internally composes chieflab-post + chieflab-email under one runId. Spec-renamed alias of chiefmo_launch_product (backwards-compat retained). Endpoint: https://api.chieflab.io/api/mcp
- chieflab_post - Operator: chieflab-post (primary). Single-channel publish loop. Accepts channel + product context, returns one draft + one publishAction + reviewUrl. Use when the user says "post this to linkedin" / "draft a hacker news submission" / "send a tweet about this" — anywhere the full launch loop is overkill. Approval-gated, spec v0.1 conformant. Falls through to the launch handler with channels=[channel], imagesNeeded=0. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_send - Operator: chieflab-email (primary executor). Approval-gated email send via Resend. Pass actionId from a prior launch's publishActions (after the user approves the email). Spec-renamed alias of chiefmo_send_approved_email — both names route to the same handler. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_measure - Operator: chieflab-measure (primary). 24h post-launch readback: pulls Zernio engagement, GA4 traffic, Search Console queries; returns structured metrics + next-iteration brief. Spec-renamed alias of chiefmo_post_launch_review — both names route to the same handler. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_brain_read - Operator: chieflab-brain (primary read). Returns the per-tenant company brain: brand voice samples, repo facts, proof assets, channel performance memory, claim risk log. Drives cross-launch grounding. Spec-renamed alias of chiefmo_company_brain — both names route to the same handler. Record tools: chiefmo_record_proof / chiefmo_record_brand_voice / chiefmo_record_repo_fact / chiefmo_record_channel_result. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_redraft - 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 call chieflab_record_rendered_copy({ assetId, body }) to commit. Multi-turn flow stays coherent: each redraft increments action.metadata.revision; original brief preserved in metadata.history. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_set_provider_key - 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), anthropic (LLM, future), openai (LLM, future). Stored encrypted at rest. Use chieflab_revoke_provider_key to remove. The key never leaves this workspace. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_provider_keys - List which provider keys are stored for THIS workspace. Returns provider names + storedAt timestamp + masked key fingerprint (last 4 chars). Never returns the raw key. Use to confirm BYOK status before a launch — every provider listed here means you pay the provider directly; missing providers mean ChiefLab bills through. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_revoke_provider_key - Remove a stored provider key from THIS workspace. After revocation, ChiefLab falls back to its hosted key (billed through with markup) for that provider. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_record_engagement - USE WHEN the user (or your agent on their behalf) sees an inbound DM / comment / reply that responded to a ChiefLab-published launch. Records it in the inbox so ChiefLab can draft a personalized response. Also accepts unsolicited inbound (no actionId/runId) — general inbox. Returns engagementEventId for use with chieflab_draft_reply. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_inbox - 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) — default new. Pair with chieflab_draft_reply to handle them. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_draft_reply - USE WHEN you (the agent) have an engagement event and want ChiefLab to draft a personalized response. Pulls the launch context + brand voice from the brain + the inbound content, returns a drafted reply in the workspace's voice. Creates an approval action (same gate as publish). Optionally accept an instruction ('keep it short', 'mention our pricing'). After drafting, surface the draft to the user inline for approval, then call chiefmo_send_reply({ actionId }) on approval. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_send_reply - EXECUTE an approved reply. Approval-gated: the draft_action_id from the engagement event MUST be in 'approved' status. Routes to the right channel adapter (Zernio for social DMs/comments, Resend for email replies). Records sent_at, marks engagement status='sent'. Side effect: the approved reply body becomes a voice sample in the brain so the next draft for this workspace learns from it. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_dismiss_engagement - Mark an engagement event as dismissed (won't reply, e.g. spam / irrelevant). Optionally record a dismissal reason so the brain learns to deprioritize similar inbound in the future. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_record_prospect - USE WHEN the user wants to add a cold-outreach prospect to ChiefLab's outbound queue. Records the prospect (email + optional name/company/role + custom 'why-them' context) so ChiefLab can draft a personalized first-touch. Optional campaign tag groups related prospects ('q3-saas-founders', etc). Returns prospectId for chieflab_draft_outbound. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_outbound_inbox - USE WHEN the user asks 'what cold prospects are queued?' / 'show me my outbound list' / 'who haven't I drafted yet?'. Lists prospects for THIS workspace by status (default: new). Filterable by campaign. Pair with chieflab_draft_outbound to handle them. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_draft_outbound - USE WHEN you (the agent) have a recorded prospect and want ChiefLab to draft a personalized cold first-touch. Pulls the prospect record + the workspace brand voice from the brain + (optional) URL scrape of the user's own product page; returns a drafted reach-out in the workspace's voice. Creates an approval action (same gate as publish/reply). Optionally accept an instruction ('keep it short', 'mention pricing', 'lead with the case study'). Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_send_outbound - EXECUTE an approved cold outreach. Approval-gated: the draft_action_id from the prospect MUST be in 'approved' status. Routes to the right channel adapter (Resend for email; LinkedIn / Twitter via future adapters). Records sent_at, marks prospect status='sent'. Side effect: the approved body becomes a voice sample in the brain so the next outbound draft learns from it. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_outbound_dismiss - Mark a prospect as dismissed (not a fit, already a customer, wrong ICP, etc). Optionally record a reason so the brain learns to deprioritize similar prospects in future. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_status - 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 user command + runHandle), and `next` (the one-line prompt). Aggregates: pending approvals + ripe measurements + new engagement + queued prospects + recent launches + manual-publish-pending actions. ChiefLab is stateful and re-summonable — even if the conversation was lost, the IDE was switched, or the runId was forgotten, this call recovers the workspace business state. If any cards exist, agents should surface them BEFORE drafting a new launch. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_boot - 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. Named `boot` to make the session-entry pattern obvious to agent runtimes scanning tools/list. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_verify_install - 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, workspaceReady, hasOpenLoops, blockedConnectors, summary }. The `summary` is one sentence the agent should paste verbatim to the user — e.g. 'ChiefLab installed and ready. Workspace fresh, no open loops, all channels need connectors before auto-publish.' Do NOT list all 138 tools — render the summary only. If `ok` is false, the response includes a `nextStep` describing the single recovery action. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_brain_summary - 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 drafts, what's been rejected and why, channel-specific performance, recent proof points. The moat made visible. Pair with chieflab_brain_read for the raw structured data. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_delete_workspace - GDPR / right-to-erasure tool. Permanently deletes ALL data for THIS workspace: launches, drafts, actions, brain memory, voice samples, engagement events, outbound prospects, connector tokens, OAuth credentials, settings, members, audit logs older than required retention. Also REVOKES the workspace's API key — every subsequent call with that key returns 401. Requires explicit confirm='DELETE-MY-WORKSPACE' to prevent accidents. The action itself logs a deletion receipt before purging (audit trail of the deletion). IRREVERSIBLE. See /privacy for what gets deleted and what (if anything) is retained for legal compliance. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_export_workspace - GDPR Art. 15 / Art. 20 — right of access + data portability. Returns a structured JSON dump of every row across every workspace-scoped table for THIS workspace. Connector tokens and key hashes are redacted (secrets are never exported, even to the owner). Each table is capped at 10,000 rows per call; for larger workspaces, the response indicates which tables hit the cap so the caller can paginate or escalate to manual export via privacy@chieflab.io. Logs a workspace.export_requested audit event. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_export_subject - GDPR Art. 15 — right of access for a THIRD-PARTY subject in your workspace (a prospect, engagement contact, or person referenced in your brain). Searches by 'handle' (email, social handle, name, or company name). Returns two scans: PRIMARY (exact-match rows in chieflab_outbound_prospects and chieflab_engagement_events — safe to act on) and SECONDARY (text-contains hits in draft bodies, voice samples, custom_context — needs manual review for false-positive name collisions). Pair with chieflab_purge_subject for surgical erasure. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_purge_subject - GDPR Art. 17 — right to erasure for a THIRD-PARTY subject in your workspace. Two-phase: first call without confirm returns a preview (count of rows that would be deleted). Second call with confirm='PURGE-SUBJECT' executes the surgical delete across chieflab_outbound_prospects (email/name/company match) and chieflab_engagement_events (from_handle match). Text mentions in draft bodies, voice samples, and custom_context are NOT auto-purged — those require manual review (use chieflab_export_subject to find them). Logs a subject.purge_completed audit event with full deletion receipt. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_audit_log_read - GDPR Art. 30 / SOC2-prep — read the workspace's audit log. Returns event rows from chieflab_events filtered to this workspace within a time window. Default window: last 30 days, 200 rows max. Use larger windows or limits (up to 1000) explicitly. Captures: signup, deletion, export, subject-purge, approval gate transitions, publish/send actions, and any audit_log reads themselves (meta-audit). Foundation for SOC2-prep and for answering 'who did X when' questions. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_publish_capability - USE WHEN registering an operator-capability into ChiefLab's discovery registry — 'I have a demo-video agent, register it so other agents can find it', 'publish my SEO operator as a callable capability'. Upsert: keyed on (operatorId, capability). Once published, other agents can call chieflab_search_capabilities and chieflab_create_work_request to request bounded work from this operator. Approval-required true by default — the requester's human must approve any spend before the offer is accepted. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_search_capabilities - 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 chieflab_create_work_request to actually request bounded work from the chosen operator. The discovery embryo for an agent-native marketplace. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_get_capability - 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. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_create_work_request - 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 submitted, the requester (or their human) reviews + accepts via chieflab_accept_offer (which then creates an approval-gated action for the spend). Endpoint: https://api.chieflab.io/api/mcp
- chieflab_list_work_requests - USE WHEN reviewing the workspace's open / offered / accepted / fulfilled work requests — 'what cross-operator work is in flight', 'show me my open agent requests'. Returns most recent first. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_match_capabilities - USE WHEN a work request was just created and you want the top N matching providers ranked for offer-solicitation — 'who should I notify about this work request'. First pass: exact capability match by recency. Future passes will layer reputation + budget scoring once fulfillments exist. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_submit_offer - USE WHEN you (an operator) want to bid on an open work request — 'offer to fulfill request req_abc with this scope, price, and ETA'. The requester reviews via chieflab_review_offers and accepts via chieflab_accept_offer. Acceptance triggers an approval-gated action so the requester's human authorizes the spend before work begins. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_review_offers - USE WHEN reviewing the offers on a work request you created — 'show me bids on req_abc'. Returns offers sorted newest-first. Pair with chieflab_accept_offer to pick a winner. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_accept_offer - USE WHEN the requester wants to accept a specific offer — 'accept offer off_xyz'. STAGES acceptance only — returns actionId + reviewUrl + renderInChat. The human must approve via the reviewUrl before the offer actually transitions. After approval, call chieflab_execute_approved_offer_acceptance({ actionId }) to finalize. Same approval contract as publish/send: prepare → review → approve → execute. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_execute_approved_offer_acceptance - EXECUTOR · call ONLY after the user has approved the offer_acceptance action created by chieflab_accept_offer. Transitions the offer to accepted, rejects sibling offers, marks the parent work request accepted. Returns requires_approval if the action is not yet approved. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_submit_fulfillment - USE WHEN you (a provider operator) have completed work for an accepted offer and want to deliver the artifact — 'I finished the demo video, here's the URL'. Records the artifact + timing; the requester then reviews via chieflab_accept_fulfillment. Reputation is computed from these rows (never stored as a separate score) so there's no way to inflate it without leaving a paper trail. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_accept_fulfillment - USE WHEN reviewing a delivered fulfillment — 'mark ful_pqr as accepted, I used it in my launch'. Records requesterAccepted + (optionally) usedDownstream + outcomeScore. Used + outcomeScore are what compound into the provider's reputation over time. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_reputation_summary - USE WHEN evaluating a provider operator before requesting work — 'how reliable is demo-video-agent', 'show me their delivery record'. Returns computed-from-fulfillments stats: completedJobs, approvalRate, onTimeRate, usedDownstreamRate, avgOutcomeScore, lastDeliveredAt. No stored scores; the truth comes from the fulfillment trail. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_provider_boot - PROVIDER-SIDE SESSION RECOVERY · first call when a provider agent (e.g. demo-video-agent) starts a session. Returns: open matching requests (capability=yours, status=open), offers you submitted that are awaiting requester approval, accepted jobs awaiting your fulfillment, fulfillments you delivered awaiting requester acceptance, your reputation summary. The provider equivalent of chieflab_boot — answers 'what paid work is waiting for me?' in one call. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_provider_inbox - PROVIDER-SIDE INBOX · list open work requests matching a capability the provider can fulfill. Lighter-weight than provider_boot — call this to refresh just the open-requests list without re-fetching offers/fulfillments/reputation. Returns most-recent-first. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_demo_video_quote - PROVIDER-SIDE · demo-video operator quotes on an open work request. Pulls the request's brief, produces a scope summary + price + ETA + why-fit evidence, and submits a real offer via chieflab_submit_offer. Idempotent — re-quoting on the same request updates the existing offer. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_demo_video_fulfill - PROVIDER-SIDE · demo-video operator fulfills an accepted offer. Produces a real launch-asset bundle: videoBrief, shotList, script, thumbnailBrief, aspectRatios, recommendedHook, remotionPrompt. Submits the artifact via chieflab_submit_fulfillment so the requester can review + accept. The artifact attaches back to the parent launch room if the work request had a sourceRunId. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_request_launch_help - USE WHEN a launch run lacks a capability and the user wants to request help from another operator — 'get demo video help', 'this launch needs a video', 'request external work for runId X'. One-call tool: pulls the launch's context, detects the capability gap (or uses the one you specify), creates the work request, returns matching providers. Pair with chieflab_review_offers + chieflab_accept_offer once offers come in. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_run_start - USE WHEN the user wants the full multi-agent GTM team coordinated on a goal — 'launch this and run social/email/blog/creative together', 'do the whole GTM motion', 'plan + draft + approve + measure end-to-end'. Spawns a GTM run; the orchestrator picks which of the 8 agents (launch / social / email / blog-seo / creative / analytics / experiment / approval) to activate based on the goal. Returns the run id, the run plan (which agents activated and why), and links to /app/gtm for the human command center. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_run_get - Read a GTM run by id. Returns the run row, every agent run, every handoff. Use this in the human command center / dashboard or to inspect a run after the fact. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_run_list - List recent GTM runs in the caller's workspace. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_agent_run - Advanced. Run one specific GTM agent in isolation, bypassing the orchestrator. Use when you've already collected the upstream handoffs and want to invoke a single agent for re-runs / diffs. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_handoffs_list - Read every handoff emitted in a GTM run, in order. Useful for the command center timeline and for debugging why an agent skipped (no input handoff found). Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_memory_get - Read the shared memory for a workspace + tenant. Memory keys are agent-namespaced (e.g. 'audience.refinement', 'seo.targetQueries.recent'). Returns the full key-value snapshot. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_memory_set - Write a fact into shared memory. Use sparingly — agents normally write their own memory. Caller-asserted writes are useful for seeding context (e.g. 'audience.refinement = {...}' before a first run) or correcting an agent's mistake. Endpoint: https://api.chieflab.io/api/mcp
- chiefmo_gtm_run_approve - Approve all pending actions in a GTM run. Equivalent to clicking 'approve all' on the reviewUrl. Returns the actions that fired (publish, send) and any that were rejected by safety checks. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_approve_action - [chieflab_* alias of chiefmo_approve_action] Approve one ChiefMO publish/send action so its executor (publish_approved_post / send_approved_email) 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 specific draft you rendered. Match the user's words to the channel, look up agentGuide.renderInChat[channel].actionId from the launch response, and call this tool with that actionId. This is the IDE-native approval path — no need to push the user to the reviewUrl. Pass `actionId` (preferred) or `id` (legacy alias). Endpoint: https://api.chieflab.io/api/mcp
- 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 measurement, measure results, or prepare the next move. This exists because agents are stateless; ChiefLab remembers approval state, actionIds, connector blockers, measurement windows, and next tool calls. Endpoint: https://api.chieflab.io/api/mcp
- 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 / shares / follower delta) for posts in the launch run + recommends next iteration (rewrite, refresh creative, double down, pause). Returns per-account analytics + top posts + best-time-to-post + a structured next-move recommendation brief. Endpoint: https://api.chieflab.io/api/mcp
- 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 (day 2 reply post, day 3 case study, day 5 metrics share, day 7 retrospective) grounded in the prior launch's runId, the per-tenant brand voice + repo facts + channel performance from the P9 company brain, and the prior recommendation (so the next move doesn't repeat the last one). Returns a draft queue + signed reviewUrl + the standard agentGuide block. Each next-move action lands in awaiting_approval; nothing fires without explicit human approval. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_publish_approved_post - [chieflab_* alias of chiefmo_publish_approved_post] Publish an approved social post (LinkedIn / X / Threads / Instagram / Facebook / Bluesky / TikTok) via Zernio. USE WHEN the user has approved a publishAction from chiefmo_launch_product on the reviewUrl and you need to fire the post. Strict approval gate: returns { reason: 'requires_approval', reviewUrl } if the action isn't approved yet. Once executed, returns the live platform post URL. Money/external-system action — never call this without an approved actionId. Endpoint: https://api.chieflab.io/api/mcp
- chieflab_send_approved_email - [chieflab_* alias of chiefmo_send_approved_email] Send an approved launch email via 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 shape as chiefmo_publish_approved_post). `from` MUST be on a verified Resend domain — check chieflab_list_email_senders first. Single recipient or short list (≤50). Money/external-system action — once sent cannot be unsent. Endpoint: https://api.chieflab.io/api/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.bdentech
- Version: 0.3.0
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 12, 2026
- Source: https://registry.modelcontextprotocol.io
