What agents actually get back.

Repo evidence in → approval-gated launch pack out.

Input

A coding agent should gather repo context before calling chiefmo_launch_product. The single most useful field is whatChanged; commits, files, and routes make the launch pack harder to hallucinate.

{
  "productUrl": "https://acmebatch.example.com",
  "goal": "Get the first 100 paying solo creators",
  "repoContext": {
    "whatChanged": "Shipped scheduled posts (Sunday -> all week) plus per-account quota guards",
    "recentCommits": [
      "feat(scheduler): persistent cron + per-account caps",
      "ui(schedule): drag-to-reorder + preview",
      "billing(stripe): metered usage on quota overrun"
    ],
    "changedFiles": [
      "app/scheduler.ts",
      "components/ScheduleDialog.tsx",
      "lib/billing/quota.ts"
    ],
    "routes": [
      "/",
      "/dashboard",
      "/schedule",
      "/pricing"
    ]
  }
}

Output

ChiefLab returns inline-ready drafts, a signed review URL fallback, and approval-gated actions. The agent renders the drafts in chat, waits for approval, and only fires the executor tools after approval.

{
  "launchId": "run_acmebatch_001",
  "reviewUrl": "https://chieflab.io/runs/run_acmebatch_001?token=<signed>",
  "repoContextQuality": 92,
  "positioning": "AcmeBatch is the Sunday-night batch scheduler for solo creators who want a full week of posts queued before Monday starts.",
  "channels": {
    "linkedin": "Founder story about replacing the Sunday-night copy/paste ritual with drag-to-reorder scheduling.",
    "x": "5-post thread: pain, shipped scheduler, quota guard, preview GIF, CTA.",
    "product_hunt": "Tagline: Schedule a week of posts on Sunday night.",
    "email": "Subject: Your Sunday-night batch scheduler is live.",
    "landing_hero": "Hero: Schedule a week of posts on Sunday."
  },
  "publishActions": [
    {
      "id": "act_linkedin_001",
      "channel": "linkedin",
      "status": "awaiting_approval",
      "executorTool": "chiefmo_publish_approved_post"
    },
    {
      "id": "act_email_001",
      "channel": "email",
      "status": "awaiting_approval",
      "executorTool": "chiefmo_send_approved_email"
    }
  ],
  "agentGuide": {
    "nextAgentAction": "render_inline_approval",
    "stopRule": "STOP. Render the drafts + approval commands inline. Surface reviewUrl only as fallback. Do not publish or send until approved.",
    "after24h": {
      "mode": "automatic_followup",
      "fallbackTool": "chiefmo_measure_launch_results",
      "args": {
        "runId": "run_acmebatch_001"
      }
    }
  }
}

Why this beats generic launch copy

Generic

"We launched an innovative AI-powered social media scheduling solution."

Repo-aware

"We shipped a Sunday-night scheduler with drag-to-reorder preview and per-account quota guards."

Agent rule

Render the drafts inline first. Use reviewUrl only when the human needs the fallback surface.

Run your own proof

# Public catalog check
curl -X POST https://api.chieflab.io/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# With a key
node scripts/usefulness-audit.mjs

The usefulness audit saves the full launch response under docs/audits/ so you can judge whether the output references real repo evidence.