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.