Cofounder CLI
Watch It Run
Follow what the company's agents are doing: the event stream, the roadmap, billing state, and local environment checks.
Your agent does the work; your job is to watch it. Three questions matter: what happened, what's next, and what it's costing.
Events
Everything meaningful your company's agents do lands in the event stream.
| MCP | CLI | API |
|---|---|---|
events_list | cofounder events list | GET /cofounder-cli/v1/events |
events_search | cofounder events search | GET /cofounder-cli/v1/events/search |
events_get | cofounder events get --event-id <event_id> | GET /cofounder-cli/v1/events/{event_id} |
events_post | cofounder events post | POST /cofounder-cli/v1/events |
events_schemas_list | cofounder events schemas list | GET /cofounder-cli/v1/events/schemas |
cofounder events tail follows new events as they arrive, the closest
thing to watching over your agent's shoulder. events post lets an agent
record its own milestones, and events schemas list shows the event types
you can filter on. A just-posted event is saved in the background, so it can take a
moment before events get finds it.
Watches
A watch is a standing question, such as "any pricing changes at our top
competitors?", rechecked daily or weekly. When a recheck finds something new,
a watch.event.detected event lands in the stream with a summary and
citations. Each recheck is billed to the company, and a company can have up to
10 watches.
| MCP | CLI | API |
|---|---|---|
watches_create | cofounder watches create --kind topic --query <text> --cadence 1d | POST /cofounder-cli/v1/watches |
watches_list | cofounder watches list | GET /cofounder-cli/v1/watches |
watches_delete | cofounder watches delete --watch-id <id> | DELETE /cofounder-cli/v1/watches/{watch_id} |
Pass --account-id or --contact-id (not both) to anchor the question to a
CRM account or contact. watches delete stops rechecks and billing.
For a live view of managed setup specifically:
cofounder watch companyThe roadmap
The roadmap is the company's plan of record: agents work from it, you review it.
| MCP | CLI | API |
|---|---|---|
roadmap_get | cofounder roadmap get | GET /cofounder-cli/v1/tech-tree |
roadmap_nodes_get | cofounder roadmap nodes get --node-key <key> | GET /cofounder-cli/v1/tech-tree/nodes/{node_key} |
roadmap_nodes_prompt_get | cofounder roadmap prompt <key>, cofounder roadmap nodes prompt get --node-key <key> | GET /cofounder-cli/v1/tech-tree/nodes/{node_key}/prompt |
roadmap_nodes_complete | cofounder roadmap nodes complete --node-key <key> --reason <text> | POST /cofounder-cli/v1/tech-tree/nodes/{node_key}/complete |
roadmap get shows the recommended next milestone; roadmap prompt
gives you the full brief for a node.
Billing
| MCP | CLI | API |
|---|---|---|
company_billing_get | cofounder company billing get | GET /cofounder-cli/v1/company/billing |
company_billing_usage_get | cofounder company billing usage get | GET /cofounder-cli/v1/company/billing/usage |
| — | cofounder company billing runs list | GET /cofounder-cli/v1/company/billing/runs |
company_billing_transactions_list | cofounder company billing transactions list | GET /cofounder-cli/v1/company/billing/transactions |
company_billing_top_up | cofounder company billing top-up | POST /cofounder-cli/v1/company/billing/top-ups |
company_billing_transactions_retry | cofounder company billing transactions retry <transaction-id> | POST /cofounder-cli/v1/company/billing/transactions/{transaction_id}/retry |
runs list shows spend per agent run, with charges that carry no run grouped
into one unattributed bucket.
If a purchase or charge didn't go through, transactions retry tries it
again for the same amount; take the id from transactions list. If a
resource failed to provision for billing reasons, retry it through
cofounder company billing resources retry --binding-id <id>.
Auto-recharge
Auto-recharge buys more credit from the saved card when your balance runs
low, so paid work doesn't stop. It charges real money, so turning it on
requires --consent, and changing it takes a company admin.
| MCP | CLI | API |
|---|---|---|
company_billing_auto_recharge_get | cofounder company billing auto-recharge get | GET /cofounder-cli/v1/company/billing/auto-recharge |
company_billing_auto_recharge_update | cofounder company billing auto-recharge update --enabled --consent --threshold-cents <cents> --amount-cents <cents> --monthly-limit-cents <cents> | PUT /cofounder-cli/v1/company/billing/auto-recharge |
company_billing_auto_recharge_retry | cofounder company billing auto-recharge retry | POST /cofounder-cli/v1/company/billing/auto-recharge/retry |
When the balance would drop below --threshold-cents, Cofounder buys
--amount-cents of credit, up to --monthly-limit-cents a month. If no
card is saved yet, update returns a link to add one, and nothing is charged
until that's done. --no-enabled stops future charges. If a charge needs
the cardholder to confirm it, auto-recharge retry returns a link for that.
Referrals
Referring another founder earns credit:
| MCP | CLI | API |
|---|---|---|
referrals_link_get | cofounder referrals link get | GET /cofounder-cli/v1/referrals/link |
referrals_history_get | cofounder referrals history get | GET /cofounder-cli/v1/referrals/history |
link get prints your link and totals; history get lists each person you
referred and whether their credit was granted.
Diagnostics
When something feels off on your machine rather than the company's, run:
cofounder doctorIt checks the CLI's own environment: auth, config, connectivity.
Support
Open a ticket with the Cofounder team and keep the thread going from the terminal:
| MCP | CLI | API |
|---|---|---|
support_create | cofounder support create --subject <text> --description <text> | POST /cofounder-cli/v1/support/tickets |
support_list | cofounder support list | GET /cofounder-cli/v1/support/tickets |
support_get | cofounder support get --ticket-id <id> | GET /cofounder-cli/v1/support/tickets/{ticket_id} |
support_reply | cofounder support reply --ticket-id <id> --body <text> | POST /cofounder-cli/v1/support/tickets/{ticket_id}/reply |
Creating a ticket sends the supplied fields to Cofounder Support. Add
--runtime, --runtime-version, or --model when they help diagnose the
problem. Use --context-excerpt for a deliberately selected, relevant excerpt;
leave out full conversations, raw transcripts, credentials, and unrelated
personal data. Cofounder does not retrieve conversation history automatically.
Cofounder generates and returns a support request ID when you omit
--support-request-id. Reuse that ID when retrying to request best-effort
deduplication. You only see your own tickets.
Upload screenshots
Upload private screenshots to S3, Cofounder's file storage. No selected company or paid subscription is required. The CLI handles uploads when you pass local files:
cofounder support create --subject 'Broken preview' --description 'The page stays blank.' \
--screenshot ./preview.png --screenshot ./console.pngRepeat --screenshot for up to five PNG, JPEG, or WebP files, at most 10 MiB each.
The CLI checks all files, generates one request ID, uploads each file directly
to S3, finalizes them, and creates the ticket. Use --dry-run to preview the
fields and local paths without reading files or sending requests.
For an existing upload, use --screenshot-upload-id with its explicit
--support-request-id. Local-file and upload-ID flags cannot be combined.
If a response is uncertain, the error includes the request ID, known upload IDs,
and a command to inspect progress. Keep those IDs and resume with finalized
upload IDs; do not rerun the local-file command and upload another set.
Before ticket submission, cleanup only touches this invocation's unused uploads.
Uncertain finalization or ticket responses preserve them for inspection.
MCP agents use the separate upload operations below, then pass the finalized
IDs to support_create.
| MCP | CLI | API |
|---|---|---|
support_uploads_start | cofounder support uploads start --support-request-id <id> --filename <name> --content-type <type> --size-bytes <bytes> | POST /cofounder-cli/v1/support/uploads |
support_uploads_finalize | cofounder support uploads finalize --support-request-id <id> --upload-id <id> --parts <json> | POST /cofounder-cli/v1/support/uploads/{upload_id}/finalize |
support_uploads_get | cofounder support uploads get --support-request-id <id> | GET /cofounder-cli/v1/support/uploads |
support_uploads_cancel | cofounder support uploads cancel --support-request-id <id> --upload-id <id> | DELETE /cofounder-cli/v1/support/uploads/{upload_id} |
Upload flow:
- Use one request ID for the group.
startreturns an upload ID and temporary URL for each file; specify its type, such asimage/png, and exact byte size. - HTTP
PUTthe file to that URL. Keep the response'sETagheader: it identifies the uploaded part. - Call
finalizewith both IDs and--parts '[{"part_number":1,"etag":"<ETag>"}]'to validate the stored image. - Create the ticket with the same
--support-request-idand repeat--screenshot-upload-id <id>for each finalized file. MCP callers supplyscreenshot_upload_idstosupport_create.
cofounder support create --subject 'Screenshot example' --description 'The error appears here.' \
--support-request-id <request-id> --screenshot-upload-id <first-upload-id> \
--screenshot-upload-id <second-upload-id>Intercom copies the images into its own storage. support create and support get
return screenshot names, sizes, types, and temporary download URLs. Read the
ticket again to refresh expired download URLs. Intercom controls the order in
which attachments are displayed.
get shows progress, including confirmed conversation and ticket IDs, and
refreshes pending upload URLs. Once submission begins, the screenshot list is
frozen: retry with the same request ID and ordered upload IDs. An unresolved
conversation creation must be inspected before another ticket is created.
After the 24-hour upload record expires, use support get --ticket-id <ticket-id>
to read the existing ticket; support create cannot verify the original upload IDs.
cancel deletes a file before submission
and frees its slot once cleanup succeeds. MCP agents must read the file and
make the HTTP request themselves; the hosted tool can't open local paths.
Limits: five static PNG/JPEG/WebP files per request, 10 MiB each, 50 million pixels per image, and 20,000 pixels per side. Extension, MIME type, and bytes must match. Each user gets 25 start attempts per hour. URLs last one hour; references expire 24 hours after the first reservation. Files stay temporary and are subject to abandoned-upload cleanup.
Retry rules:
- Lost start response: call
getbefore reserving another slot. - Lost finalize response: check progress and retry
finalize. If S3 hasn't confirmed completion, you can't cancel yet; check again later. - Failed cancel: retry
cancel. You can't finalize until cleanup finishes.
Next steps
The Advanced section covers where secrets live, multiple companies, API keys, and the rest of the MCP surface.