← Registry

Developer Tools

chieflab.io

ChiefLab helps manage product launches and integrate with various third-party services.

2 endpoints90 known toolsFirst detected May 29, 2026Last detected September 6, 2026

ENDPOINT 1

https://api.chieflab.io/api/mcp

No auth detected

MCP server metadata

Name
chieflab
Version
0.3.0
Capabilities
tools
Server instructions

USE WHEN the user says "launch this", "get users", "market this", "announce this", "post this", "Product Hunt", or asks what to do after shipping a product. FIRST CALL FOR A COLD AGENT: chieflab_help (no args). Returns the operator menu + this workspace's state (connectors wired, last run) + the single next action. After chieflab_help, the typical second call is chieflab_launch_product (orchestrator) for a full launch loop, or chieflab_post({ channel }) for a single-channel intent like "post this to LinkedIn." Do not call chiefmo_diagnose_marketing for a new launch. Tools carry _meta.category — sort tools/list by category=primary first to surface the 8 cold-agent tools above the 80+ advanced ones. ChiefLab is the reference implementation of an open execution contract for agents doing business work. Open spec at https://chieflab.io/spec/v0.1 (MIT-licensed, v0.1 draft). Six operators live today, each following the six-stage lifecycle (prepare → review → approve → execute → measure → remember): - chieflab-launch · primary tool: chieflab_launch_product (orchestrator) - chieflab-post · primary tool: chieflab_post (single-channel publish) - chieflab-email · primary tool: chieflab_send (approval-gated email) - chieflab-measure · primary tool: chieflab_measure (24h readback) - chieflab-brain · primary tool: chieflab_brain_read (per-tenant memory) - chieflab-connect · primary tool: chieflab_connect_provider (OAuth) Backwards-compat: every chiefmo_* tool name still routes to the same handler as its chieflab_* spec-renamed primary. Existing integrations keep working. New integrations SHOULD use the chieflab_* operator-primary names. Once an agent has built or deployed a product, ChiefLab is the money/distribution loop: get the product in front of real people, create clicks/replies/signups, protect every external action with approval, measure what happened, and prepare the next move. A coding agent can build; ChiefLab helps the product earn attention. ═══════════════════════════════════════════════════════════════════════ THE CANONICAL AGENT PATH — IDE-NATIVE (memorize this) ═══════════════════════════════════════════════════════════════════════ The user is sitting inside an IDE chat (Cursor / Claude Code / Codex). Your job is to render every draft inline in chat and collect approvals in chat. The reviewUrl is a SIDE channel for phone / multi-person / image-variant review — not the headline. When the user says any of: "launch this" / "get users" / "find users" / "market this" / "post this" / "announce this" / "Product Hunt" / "what now after launch" — and they've just built/shipped something: 1. Gather repoContext (whatChanged, recentCommits with FULL messages, prDescription if a PR is open (gh pr view --json body -q .body), changelogEntry, changedFiles, routes, readme, targetCustomer, launchGoal). Quote-worthy raw text > polished summaries. Pass the team's actual words; ChiefLab synthesizes from those instead of paraphrasing into AI-generated prose. What you JUST shipped. 2. Call chieflab_launch_product({ productUrl, goal, repoContext }) for a full launch loop, OR chieflab_post({ channel, productUrl, goal, repoContext }) when the user named a single channel ("post this to LinkedIn"). Both follow spec v0.1. Backwards-compat: the old names chiefmo_launch_product / chieflab_get_users_after_build still route to the same handler. 3. RENDER agentGuide.renderInChat[*].body inline in chat — one section per channel (LinkedIn, X, Hacker News, Reddit, Email, etc). Each section shows the actual final copy, not a link, not a brief. 4. Send agentGuide.userMessage verbatim — it tells the user how to approve in chat ("approve linkedin", "approve all") AND surfaces the reviewUrl as a side-channel for mobile/team approval. 5. WAIT for the user to say approve / reject / revise. Do not retry. Do not push the user to the reviewUrl unless they ask. 6. ITERATION (the vibe-code loop — DO NOT skip): if the user says "make the LinkedIn one punchier" / "shorter" / "more casual" / "add the $40 number" / "less salesy" / any partial-edit instruction — use the TWO-CALL pattern: (a) chieflab_redraft({ actionId, instruction }) → returns the brief with originalBody + the instruction. The action row already starts revising. (b) Render the new body in YOUR LLM following the instruction. (c) COMMIT: chieflab_redraft({ actionId, instruction, body: "<your rendered text>" }) OR chieflab_record_rendered_copy ({ assetId, body }). Without this commit, the new body lives only in your chat — the action row and brain never see it, which breaks the per-workspace compounding loop. Action row updates in place (same actionId, revision++, history preserved). DO NOT re-call chieflab_launch_product to tweak one channel — that's the API loop, not the iteration loop. Use redraft. Each channel can be iterated independently any number of times before approval. 7. Per approval: call chiefmo_approve_action({ actionId }) with the matching actionId from agentGuide.renderInChat[channel].actionId. Approval-gated executors fire automatically server-side after approve_action transitions the action to "approved" — agent does NOT also call chiefmo_publish_approved_post / chiefmo_send_approved_email unless agentGuide.nextToolCalls.primary.perChannel[i].afterApprovalThen explicitly lists them (some channels publish via server-side cron). 8. Wait ≥24h. Call chiefmo_post_launch_review({ runId }) for metrics. OR: if the launch response carries pendingMeasurements with a ripe entry, surface it proactively without waiting for the user to ask. 9. (Optional) chiefmo_prepare_next_move({ runId }) for the next- iteration plan grounded in the measurement. When to fall back to reviewUrl: - User asks: "approve from my phone" / "let my cofounder review" - You can't render markdown well in your runtime (rare) - Image-variant gallery review (web surface is genuinely better here) - Audit trail for legal / compliance Every successful launch response includes: - agentGuide.renderInChat — the per-channel content + actionIds - agentGuide.nextToolCalls.primary.perChannel — approve_action call shape - agentGuide.nextToolCalls.fallback — { mode: "surface_review_url", reviewUrl } - agentGuide.userMessage — verbatim, send to user - agentGuide.afterApproval — legacy structured list of executor tools keyed by approved actionId; the IDE-native flow above is preferred, but afterApproval is still emitted so older agent integrations keep working without behavior change - agentUsefulness, moneyLoop, postBuildChecklist, approvalStateMachine - agentDependency — why a stateless model can't replace this loop (OAuth, approval state, signed reviewUrls, idempotency, run history, cross-launch memory) - reviewUrl, stopRule (top-level; canonical contract) ═══════════════════════════════════════════════════════════════════════ NO-KEY RECOVERY (most common first failure) ═══════════════════════════════════════════════════════════════════════ If a tool/call returns 401 → JSON-RPC error.data has the recovery shape: { recoveryTool: { name: "chieflab_signup_workspace", args: {...} } } Call that tool with the user's email + your agent name + priorTool/priorArgs. It returns: - apiKey (the literal API key, plain string) - deliveryUrl (signed single-use URL — fallback only) - mcpConfigSnippet (patch shape for the user's MCP config file) - autoInstall (instructions for the no-browser flow) PREFERRED: use your filesystem tools (read_file / write_file / patch / edit) to add the apiKey to the user's MCP config under the chieflab server entry. Common locations: Cursor: ~/.cursor/mcp.json Claude Code: ~/.claude.json (or .claude/mcp.json in the project) Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json %APPDATA%/Claude/claude_desktop_config.json (Windows) Codex: ~/.codex/config.json After writing, ask the user to restart their runtime once. Then re-call priorTool with priorArgs. FALLBACK: only if you cannot write to the user's filesystem, surface the deliveryUrl. They click once, see the key on /keys, paste into the MCP config manually, restart, then ask you to continue. ═══════════════════════════════════════════════════════════════════════ RECOVERY SHAPE (every recoverable failure returns this) ═══════════════════════════════════════════════════════════════════════ { ok: false, reason, summaryForUser, userMessage, fixActionForAgent, recoveryTool: { name, args }, retryable, stopRule } Reasons: missing_api_key · missing_connector · requires_approval · missing_repo_context · missing_credits · workspace_not_found · connector_failed · measurement_unavailable · invalid_action_id · wrong_workspace · rate_limited · provider_not_live. Recovery docs: https://chieflab.io/docs/recovery If retryable=true and recoveryTool != null → call the recovery tool then re-attempt. If retryable=false → STOP and surface userMessage. ═══════════════════════════════════════════════════════════════════════ HARD STOP RULES ═══════════════════════════════════════════════════════════════════════ - After chiefmo_launch_product returns reviewUrl → STOP. Surface it. Wait. - After requires_approval → STOP. Surface reviewUrl. Do not retry the publish/send. - After missing_connector → surface the connect link OR offer manual fallback. - Never call chiefmo_publish_approved_post or chiefmo_send_approved_email without an approved actionId. The server-side gate will reject premature calls; this rule keeps the agent flow clean. ═══════════════════════════════════════════════════════════════════════ TOOL TIERS (do not call non-primary tools first) ═══════════════════════════════════════════════════════════════════════ PRIMARY (call first): chiefmo_launch_product, chieflab_get_users_after_build NO-KEY RECOVERY: chieflab_signup_workspace AFTER APPROVAL: chiefmo_publish_approved_post, chiefmo_send_approved_email AFTER 24h: chiefmo_post_launch_review (chiefmo_measure_launch_results = alias) AFTER MEASUREMENT (optional): chiefmo_prepare_next_move RECOVERY: chieflab_connect_provider, chieflab_use_manual_fallback, chieflab_record_manual_publish, chieflab_get_connect_action, chieflab_retry_blocked_action ADVANCED (do NOT call first): chiefmo_diagnose_marketing, chiefmo_gtm_run_start (multi-agent), chiefmo_create_run, all per-skill tools DO NOT use chiefmo_diagnose_marketing for first-time launches — that's for diagnosing EXISTING marketing programs. Use chiefmo_launch_product.

Known tools 45

chieflab_help

FIRST TOOL — call before anything else when you don't know what ChiefLab does or where to start.

Inferred read-only
chieflab_get_users_after_build

Outcome-named alias for chiefmo_launch_product.

Inferred read-only
chieflab_connect_provider

Connect a third-party provider (Zernio, Resend, GA4, Search Console, HubSpot, Stripe, Linear, Notion, Slack) to this workspace.

Potential side effects
chieflab_retry_blocked_action

P13 — re-check a blocked publishAction's connector readiness.

Inferred read-only
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.

Potential side effects
chieflab_set_company_profile

P88 — set the workspace's persistent company profile.

Inferred read-only
chieflab_get_company_profile

P88 — read the workspace's stored company profile.

Inferred read-only
chieflab_list_specialists

P87 — list the specialist agents ChiefLab can delegate to (design / video / research / outreach / seo / analytics).

Inferred read-only
chieflab_request_specialist

P87 — delegate to a specialist agent.

Inferred read-only
chieflab_force_measurement_due

P93 — admin escape hatch.

Inferred read-only
chieflab_persistence_health

P91 — verify the persistent stores.

Inferred read-only
chieflab_query_proof_ledger

P80 — query the persistent proof ledger.

Inferred read-only
chieflab_set_publishing_targets

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.

Inferred read-only
chieflab_get_publishing_targets

P79 — read the workspace's stored publishing target defaults.

Inferred read-only
chieflab_suggest_next_move

P75 — Next Move Engine.

Inferred read-only
chieflab_create_next_move_action

P75 — turn a Next Move suggestion into an approval-gated draft action.

Inferred read-only
chieflab_regenerate_visual_asset

P72 — regenerate a single visual asset (LinkedIn graphic, X graphic, landing hero, etc.

Inferred read-only
chieflab_record_manual_metrics

P116 — paste-what-you-see metric fallback for channels without public-API measurement (X, LinkedIn, Email, landing pages, Product Hunt).

Potential side effects
chieflab_measure_reddit

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.

Potential side effects
chieflab_measure_hacker_news

P109 — pull a Hacker News post's score + comments + top replies via the public HN API and write them to the action's metadata.

Potential side effects
chieflab_review_visual_asset

P104 — approve or reject a single visual asset (LinkedIn graphic / X image / landing hero / Product Hunt gallery / carousel slide).

Inferred read-only
chieflab_execute_approved_action

P71 — closed-loop executor wrapper.

Inferred read-only
chieflab_check_measurement_due

P71 — measurement queue inspector.

Inferred read-only
chieflab_skip_next_move

P142 — founder rejects a next-move recommendation without doing it.

Inferred read-only
chieflab_mark_action_done

P135 — mark a next-move action as completed when the founder has done the move BUT there's no URL to record (e.

Inferred read-only
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.

Inferred read-only
chieflab_connector_status

USE WHEN the user just completed a connector OAuth flow and you want to confirm it succeeded — 'did my connection work?

Inferred read-only
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.

Inferred read-only
chieflab_launch_product

Operator: chieflab-launch (primary).

Inferred read-only
chieflab_redraft

USE WHEN the user says 'make this more casual' / 'shorter' / 'less salesy' / 'add a specific number' / 'redraft this' about a published draft.

Inferred read-only
chieflab_set_provider_key

Store a provider API key for THIS workspace.

Inferred read-only
chieflab_inbox

USE WHEN the user asks 'what came in from my launches?

Inferred read-only
chieflab_status

SESSION-RECOVERY · FIRST CALL when a session starts and the user mentions launch / users / growth / customers / metrics / revenue / marketing / what next / shipping.

Inferred read-only
chieflab_boot

Alias of chieflab_status.

Inferred read-only
chieflab_verify_install

POST-INSTALL HEALTH CHECK.

Potential side effects
chieflab_brain_summary

USE WHEN the user asks 'what do you remember about my brand?

Inferred read-only
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'.

Inferred read-only
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).

Inferred read-only
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'.

Inferred read-only
chieflab_approve_action

[chieflab_* alias of chiefmo_approve_action] Approve one ChiefMO publish/send action so its executor can fire.

Potential side effects
chieflab_continue_launch_loop

[chieflab_* alias of chiefmo_continue_launch_loop] Resume a ChiefLab launch loop from runId.

Inferred read-only
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?

Inferred read-only
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?

Potential side effects
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).

Potential side effects
chieflab_send_approved_email

[chieflab_* alias of chiefmo_send_approved_email] Send an approved launch email through the email sending rail (current adapter: resend).

Potential side effects

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.chieflab]
url = "https://api.chieflab.io/api/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "chieflab": {
      "type": "http",
      "url": "https://api.chieflab.io/api/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: chieflab
Remote MCP URL: https://api.chieflab.io/api/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "chieflab": {
      "url": "https://api.chieflab.io/api/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "chieflab": {
      "type": "http",
      "url": "https://api.chieflab.io/api/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "chieflab",
  "transport": "streamable-http",
  "url": "https://api.chieflab.io/api/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 2

https://chieflab.io/api/mcp

No auth detected

MCP server metadata

Name
chieflab
Version
0.3.0
Capabilities
tools
Server instructions

USE WHEN the user says "launch this", "get users", "market this", "announce this", "post this", "Product Hunt", or asks what to do after shipping a product. FIRST CALL FOR A COLD AGENT: chieflab_help (no args). Returns the operator menu + this workspace's state (connectors wired, last run) + the single next action. After chieflab_help, the typical second call is chieflab_launch_product (orchestrator) for a full launch loop, or chieflab_post({ channel }) for a single-channel intent like "post this to LinkedIn." Do not call chiefmo_diagnose_marketing for a new launch. Tools carry _meta.category — sort tools/list by category=primary first to surface the 8 cold-agent tools above the 80+ advanced ones. ChiefLab is the reference implementation of an open execution contract for agents doing business work. Open spec at https://chieflab.io/spec/v0.1 (MIT-licensed, v0.1 draft). Six operators live today, each following the six-stage lifecycle (prepare → review → approve → execute → measure → remember): - chieflab-launch · primary tool: chieflab_launch_product (orchestrator) - chieflab-post · primary tool: chieflab_post (single-channel publish) - chieflab-email · primary tool: chieflab_send (approval-gated email) - chieflab-measure · primary tool: chieflab_measure (24h readback) - chieflab-brain · primary tool: chieflab_brain_read (per-tenant memory) - chieflab-connect · primary tool: chieflab_connect_provider (OAuth) Backwards-compat: every chiefmo_* tool name still routes to the same handler as its chieflab_* spec-renamed primary. Existing integrations keep working. New integrations SHOULD use the chieflab_* operator-primary names. Once an agent has built or deployed a product, ChiefLab is the money/distribution loop: get the product in front of real people, create clicks/replies/signups, protect every external action with approval, measure what happened, and prepare the next move. A coding agent can build; ChiefLab helps the product earn attention. ═══════════════════════════════════════════════════════════════════════ THE CANONICAL AGENT PATH — IDE-NATIVE (memorize this) ═══════════════════════════════════════════════════════════════════════ The user is sitting inside an IDE chat (Cursor / Claude Code / Codex). Your job is to render every draft inline in chat and collect approvals in chat. The reviewUrl is a SIDE channel for phone / multi-person / image-variant review — not the headline. When the user says any of: "launch this" / "get users" / "find users" / "market this" / "post this" / "announce this" / "Product Hunt" / "what now after launch" — and they've just built/shipped something: 1. Gather repoContext (whatChanged, recentCommits with FULL messages, prDescription if a PR is open (gh pr view --json body -q .body), changelogEntry, changedFiles, routes, readme, targetCustomer, launchGoal). Quote-worthy raw text > polished summaries. Pass the team's actual words; ChiefLab synthesizes from those instead of paraphrasing into AI-generated prose. What you JUST shipped. 2. Call chieflab_launch_product({ productUrl, goal, repoContext }) for a full launch loop, OR chieflab_post({ channel, productUrl, goal, repoContext }) when the user named a single channel ("post this to LinkedIn"). Both follow spec v0.1. Backwards-compat: the old names chiefmo_launch_product / chieflab_get_users_after_build still route to the same handler. 3. RENDER agentGuide.renderInChat[*].body inline in chat — one section per channel (LinkedIn, X, Hacker News, Reddit, Email, etc). Each section shows the actual final copy, not a link, not a brief. 4. Send agentGuide.userMessage verbatim — it tells the user how to approve in chat ("approve linkedin", "approve all") AND surfaces the reviewUrl as a side-channel for mobile/team approval. 5. WAIT for the user to say approve / reject / revise. Do not retry. Do not push the user to the reviewUrl unless they ask. 6. ITERATION (the vibe-code loop — DO NOT skip): if the user says "make the LinkedIn one punchier" / "shorter" / "more casual" / "add the $40 number" / "less salesy" / any partial-edit instruction — use the TWO-CALL pattern: (a) chieflab_redraft({ actionId, instruction }) → returns the brief with originalBody + the instruction. The action row already starts revising. (b) Render the new body in YOUR LLM following the instruction. (c) COMMIT: chieflab_redraft({ actionId, instruction, body: "<your rendered text>" }) OR chieflab_record_rendered_copy ({ assetId, body }). Without this commit, the new body lives only in your chat — the action row and brain never see it, which breaks the per-workspace compounding loop. Action row updates in place (same actionId, revision++, history preserved). DO NOT re-call chieflab_launch_product to tweak one channel — that's the API loop, not the iteration loop. Use redraft. Each channel can be iterated independently any number of times before approval. 7. Per approval: call chiefmo_approve_action({ actionId }) with the matching actionId from agentGuide.renderInChat[channel].actionId. Approval-gated executors fire automatically server-side after approve_action transitions the action to "approved" — agent does NOT also call chiefmo_publish_approved_post / chiefmo_send_approved_email unless agentGuide.nextToolCalls.primary.perChannel[i].afterApprovalThen explicitly lists them (some channels publish via server-side cron). 8. Wait ≥24h. Call chiefmo_post_launch_review({ runId }) for metrics. OR: if the launch response carries pendingMeasurements with a ripe entry, surface it proactively without waiting for the user to ask. 9. (Optional) chiefmo_prepare_next_move({ runId }) for the next- iteration plan grounded in the measurement. When to fall back to reviewUrl: - User asks: "approve from my phone" / "let my cofounder review" - You can't render markdown well in your runtime (rare) - Image-variant gallery review (web surface is genuinely better here) - Audit trail for legal / compliance Every successful launch response includes: - agentGuide.renderInChat — the per-channel content + actionIds - agentGuide.nextToolCalls.primary.perChannel — approve_action call shape - agentGuide.nextToolCalls.fallback — { mode: "surface_review_url", reviewUrl } - agentGuide.userMessage — verbatim, send to user - agentGuide.afterApproval — legacy structured list of executor tools keyed by approved actionId; the IDE-native flow above is preferred, but afterApproval is still emitted so older agent integrations keep working without behavior change - agentUsefulness, moneyLoop, postBuildChecklist, approvalStateMachine - agentDependency — why a stateless model can't replace this loop (OAuth, approval state, signed reviewUrls, idempotency, run history, cross-launch memory) - reviewUrl, stopRule (top-level; canonical contract) ═══════════════════════════════════════════════════════════════════════ NO-KEY RECOVERY (most common first failure) ═══════════════════════════════════════════════════════════════════════ If a tool/call returns 401 → JSON-RPC error.data has the recovery shape: { recoveryTool: { name: "chieflab_signup_workspace", args: {...} } } Call that tool with the user's email + your agent name + priorTool/priorArgs. It returns: - apiKey (the literal API key, plain string) - deliveryUrl (signed single-use URL — fallback only) - mcpConfigSnippet (patch shape for the user's MCP config file) - autoInstall (instructions for the no-browser flow) PREFERRED: use your filesystem tools (read_file / write_file / patch / edit) to add the apiKey to the user's MCP config under the chieflab server entry. Common locations: Cursor: ~/.cursor/mcp.json Claude Code: ~/.claude.json (or .claude/mcp.json in the project) Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json %APPDATA%/Claude/claude_desktop_config.json (Windows) Codex: ~/.codex/config.json After writing, ask the user to restart their runtime once. Then re-call priorTool with priorArgs. FALLBACK: only if you cannot write to the user's filesystem, surface the deliveryUrl. They click once, see the key on /keys, paste into the MCP config manually, restart, then ask you to continue. ═══════════════════════════════════════════════════════════════════════ RECOVERY SHAPE (every recoverable failure returns this) ═══════════════════════════════════════════════════════════════════════ { ok: false, reason, summaryForUser, userMessage, fixActionForAgent, recoveryTool: { name, args }, retryable, stopRule } Reasons: missing_api_key · missing_connector · requires_approval · missing_repo_context · missing_credits · workspace_not_found · connector_failed · measurement_unavailable · invalid_action_id · wrong_workspace · rate_limited · provider_not_live. Recovery docs: https://chieflab.io/docs/recovery If retryable=true and recoveryTool != null → call the recovery tool then re-attempt. If retryable=false → STOP and surface userMessage. ═══════════════════════════════════════════════════════════════════════ HARD STOP RULES ═══════════════════════════════════════════════════════════════════════ - After chiefmo_launch_product returns reviewUrl → STOP. Surface it. Wait. - After requires_approval → STOP. Surface reviewUrl. Do not retry the publish/send. - After missing_connector → surface the connect link OR offer manual fallback. - Never call chiefmo_publish_approved_post or chiefmo_send_approved_email without an approved actionId. The server-side gate will reject premature calls; this rule keeps the agent flow clean. ═══════════════════════════════════════════════════════════════════════ TOOL TIERS (do not call non-primary tools first) ═══════════════════════════════════════════════════════════════════════ PRIMARY (call first): chiefmo_launch_product, chieflab_get_users_after_build NO-KEY RECOVERY: chieflab_signup_workspace AFTER APPROVAL: chiefmo_publish_approved_post, chiefmo_send_approved_email AFTER 24h: chiefmo_post_launch_review (chiefmo_measure_launch_results = alias) AFTER MEASUREMENT (optional): chiefmo_prepare_next_move RECOVERY: chieflab_connect_provider, chieflab_use_manual_fallback, chieflab_record_manual_publish, chieflab_get_connect_action, chieflab_retry_blocked_action ADVANCED (do NOT call first): chiefmo_diagnose_marketing, chiefmo_gtm_run_start (multi-agent), chiefmo_create_run, all per-skill tools DO NOT use chiefmo_diagnose_marketing for first-time launches — that's for diagnosing EXISTING marketing programs. Use chiefmo_launch_product.

Known tools 45

chieflab_help

FIRST TOOL — call before anything else when you don't know what ChiefLab does or where to start.

Inferred read-only
chieflab_get_users_after_build

Outcome-named alias for chiefmo_launch_product.

Inferred read-only
chieflab_connect_provider

Connect a third-party provider (Zernio, Resend, GA4, Search Console, HubSpot, Stripe, Linear, Notion, Slack) to this workspace.

Potential side effects
chieflab_retry_blocked_action

P13 — re-check a blocked publishAction's connector readiness.

Inferred read-only
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).

Potential side effects
chieflab_set_company_profile

P88 — set the workspace's persistent company profile.

Inferred read-only
chieflab_get_company_profile

P88 — read the workspace's stored company profile.

Inferred read-only
chieflab_list_specialists

P87 — list the specialist agents ChiefLab can delegate to (design / video / research / outreach / seo / analytics).

Inferred read-only
chieflab_request_specialist

P87 — delegate to a specialist agent.

Inferred read-only
chieflab_force_measurement_due

P93 — admin escape hatch.

Inferred read-only
chieflab_persistence_health

P91 — verify the persistent stores.

Inferred read-only
chieflab_query_proof_ledger

P80 — query the persistent proof ledger.

Inferred read-only
chieflab_set_publishing_targets

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.

Inferred read-only
chieflab_get_publishing_targets

P79 — read the workspace's stored publishing target defaults.

Inferred read-only
chieflab_suggest_next_move

P75 — Next Move Engine.

Inferred read-only
chieflab_create_next_move_action

P75 — turn a Next Move suggestion into an approval-gated draft action.

Inferred read-only
chieflab_regenerate_visual_asset

P72 — regenerate a single visual asset (LinkedIn graphic, X graphic, landing hero, etc.) with a different style / fidelity / headline / model.

Inferred read-only
chieflab_record_manual_metrics

P116 — paste-what-you-see metric fallback for channels without public-API measurement (X, LinkedIn, Email, landing pages, Product Hunt).

Potential side effects
chieflab_measure_reddit

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.

Potential side effects
chieflab_measure_hacker_news

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.

Potential side effects
chieflab_review_visual_asset

P104 — approve or reject a single visual asset (LinkedIn graphic / X image / landing hero / Product Hunt gallery / carousel slide).

Inferred read-only
chieflab_execute_approved_action

P71 — closed-loop executor wrapper.

Inferred read-only
chieflab_check_measurement_due

P71 — measurement queue inspector.

Inferred read-only
chieflab_skip_next_move

P142 — founder rejects a next-move recommendation without doing it.

Inferred read-only
chieflab_mark_action_done

P135 — mark a next-move action as completed when the founder has done the move BUT there's no URL to record (e.g.

Inferred read-only
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.

Inferred read-only
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?'.

Inferred read-only
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.

Inferred read-only
chieflab_launch_product

Operator: chieflab-launch (primary).

Inferred read-only
chieflab_redraft

USE WHEN the user says 'make this more casual' / 'shorter' / 'less salesy' / 'add a specific number' / 'redraft this' about a published draft.

Inferred read-only
chieflab_set_provider_key

Store a provider API key for THIS workspace.

Inferred read-only
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?'.

Potential side effects
chieflab_status

SESSION-RECOVERY · FIRST CALL when a session starts and the user mentions launch / users / growth / customers / metrics / revenue / marketing / what next / shipping.

Inferred read-only
chieflab_boot

Alias of chieflab_status.

Inferred read-only
chieflab_verify_install

POST-INSTALL HEALTH CHECK.

Potential side effects
chieflab_brain_summary

USE WHEN the user asks 'what do you remember about my brand?' / 'show me my brain' / 'what have you learned?'.

Inferred read-only
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'.

Inferred read-only
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).

Inferred read-only
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'.

Inferred read-only
chieflab_approve_action

[chieflab_* alias of chiefmo_approve_action] Approve one ChiefMO publish/send action so its executor can fire.

Potential side effects
chieflab_continue_launch_loop

[chieflab_* alias of chiefmo_continue_launch_loop] Resume a ChiefLab launch loop from runId.

Inferred read-only
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'.

Inferred read-only
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'.

Potential side effects
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).

Potential side effects
chieflab_send_approved_email

[chieflab_* alias of chiefmo_send_approved_email] Send an approved launch email through the email sending rail (current adapter: resend).

Potential side effects

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.chieflab]
url = "https://chieflab.io/api/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "chieflab": {
      "type": "http",
      "url": "https://chieflab.io/api/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: chieflab
Remote MCP URL: https://chieflab.io/api/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "chieflab": {
      "url": "https://chieflab.io/api/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "chieflab": {
      "type": "http",
      "url": "https://chieflab.io/api/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "chieflab",
  "transport": "streamable-http",
  "url": "https://chieflab.io/api/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Trust Data Available

BuiltWith Trust API v2 evidence for chieflab.io was fetched 2026-08-29T15:20:29.831Z.

Trust status Neutral

chieflab.io is assessed as Neutral: No suspicious signals found, but no strong positive signal either

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.