Cofounder CLI

Company Knowledge

Teach the company what it needs to know: import founder knowledge, and manage Library files.

A company knows things two ways, and they serve different jobs:

  • Knowledge: imported facts about the company: the pitch, the market, customer conversations, decisions. This is what agents pull in as context.
  • Library: a shared file system for documents, uploads, generated artifacts, and scripts.

Import knowledge

Bulk import is a two-call move. The first call previews the parsed items and writes nothing; the second (confirm: true on MCP, --confirm on the CLI) writes them:

MCPCLIAPI
company_knowledge_importcofounder company knowledge importPOST /cofounder-cli/v1/company/knowledge/import

One catch: the input is a structured import report from a deep-research run whose output ends with an Items to import section of numbered Item N entries. A plain pitch doc won't parse.

cofounder company knowledge import --provider chatgpt \
  --company-name "Acme Analytics" --report-markdown "$(cat report.md)"
# look over the previewed items, then run it again with --confirm
cofounder company knowledge import --provider chatgpt \
  --company-name "Acme Analytics" --report-markdown "$(cat report.md)" \
  --confirm

Providers: chatgpt, claude, paperclip, openclaw, other. On MCP, call company_knowledge_import once to preview, then again with confirm: true.

Import the pitch, the audience, the constraints, and the competitors early. Your agent draws on it for every task that follows, so read the preview before you confirm.

The Library

The Library holds files rather than facts: specs, exports, decks, code, anything an agent might read or run later. Files live at paths like marketing/notes/plan.md, where the first folder is a department (general, engineering, sales, marketing, design, research, support, ops, finance, legal, or my_agents).

From a terminal, these commands work with local files and Library paths directly:

CLIWhat it does
cofounder library list [path]Browse folders and files in a department
cofounder library files get <id-or-path>Print a text file
cofounder library write <local-file> <department/path>Create or replace a text file from a local file; --idempotency-key replays a lost response
cofounder library upload <local-file> <department/path>Upload any file, including images and PDFs; --overwrite replaces the file at the exact path
cofounder library download <id-or-path> --output <path>Save a Library file locally; --force overwrites

Agents use the same operations as tools:

MCPCLIAPI
library_files_listcofounder library files list --q <name>GET /cofounder-cli/v1/company/library/files
library_files_getcofounder library files get --file-id <id>GET /cofounder-cli/v1/company/library/files/{file_id}/content
library_searchcofounder library search --q <text>GET /cofounder-cli/v1/company/library/files/search
library_text_writecofounder library text write --path <path> --content <text>POST /cofounder-cli/v1/company/library/files/text
library_files_content_publishcofounder library files content publish --file-id <id> --base-revision-token <token> --content <text>PATCH /cofounder-cli/v1/company/library/files/{file_id}/content
library_files_deletecofounder library files delete --path <path>POST /cofounder-cli/v1/company/library/files/delete
library_urls_ingestcofounder library urls ingest --url <url>POST /cofounder-cli/v1/company/library/ingest/url

files list --q matches file names and details, not contents; use search to look inside files. urls ingest saves a web page or document by URL. files delete archives the file, so it no longer shows up in lists or reads.

To edit a file without overwriting someone else's change, read it with files get, which returns a version token alongside the text. Pass that token to files content publish as --base-revision-token. If the file changed since you read it, the edit is refused; read it again, or add --overwrite-stale-content to replace it anyway.

library write and library_text_write mint an idempotency key per call. If the response is lost to a timeout or dropped connection, retry with the same --idempotency-key (idempotency_key on MCP) to recover the file the first write created instead of writing again.

Upload from an agent

cofounder library upload handles the whole upload for you. An agent calling tools does it in three steps, for files up to 32 MiB:

MCPCLIAPI
library_uploads_startcofounder library uploads start --department <dept> --filename <name> --mime-type <type> --size-bytes <n>POST /cofounder-cli/v1/company/library/uploads
library_uploads_finalizecofounder library uploads finalize --ingest-id <id> --parts <json>POST /cofounder-cli/v1/company/library/uploads/{ingest_id}/finalize
library_uploads_cancelcofounder library uploads cancel --ingest-id <id>DELETE /cofounder-cli/v1/company/library/uploads/{ingest_id}

start returns an upload URL. PUT the file's bytes to it, then call finalize with the part number and ETag from each PUT; nothing is saved until then. If the transfer fails, cancel frees the file name. Keep the upload URL private; anyone holding it can write to it. When the destination path is taken, the file is saved under a deduplicated name_2.ext sibling instead of replacing the existing file; pass overwrite to start (--overwrite on library upload) to replace it at the exact path. The agent must be able to read the file itself, so a hosted agent can't upload a path on your machine.

Agents on MCP can also read Library files directly as resources. See MCP Beyond Tools.

Generate images, SVGs, and video

Generated images, SVGs, and videos are saved to the Library, and the CLI also downloads them to your current folder. Pass --to <department>/<...>/<filename> to choose the Library path instead:

MCPCLIAPI
media_generatecofounder media generate --kind image --prompt "<prompt>"POST /cofounder-cli/v1/media
media_generatecofounder media generate --kind svg --prompt "<prompt>"POST /cofounder-cli/v1/media
media_generatecofounder media generate --kind video --prompt "<prompt>"POST /cofounder-cli/v1/media
media_getcofounder media get --job-id <job-id>GET /cofounder-cli/v1/media/{job_id}
cofounder media generate --kind image --prompt "flat illustration of a rocket, brand colors" --size 1536x1024 -o hero
cofounder media generate --kind image --prompt "landing hero, brand colors" --to design/studies/hero.png
cofounder media generate --kind svg --prompt "square app icon: a paper airplane, two-tone" -o icon
cofounder media generate --kind video --prompt "slow pan across the product dashboard" --from ./screenshot.png --no-wait
cofounder media get --job-id <job-id>

Generation costs money; the CLI prints each finished job's cost. Images usually finish while the command waits. --kind svg writes a vector SVG with QuiverAI Arrow, for logos, icons, and illustrations: quiverai/arrow-2 by default (under a minute), or --model quiverai/arrow-2-telos for complex designs (several minutes). Describe the canvas shape in the prompt; SVG takes --reference but not --from or --size. Video takes longer, so start it with --no-wait and fetch it later with media get, which downloads the files once the job is done. Use --reference (repeatable) for style or identity reference images, and --from to animate a still image; local files you pass are uploaded to the Library first. Each durable job produces one output. Without --to, it gets a generated name under your department (general/ for CLI and API-key callers). With --to, it is written to that exact path: the extension must match the kind (.png, .jpg, .jpeg, or .webp for images; .svg for SVG; .mp4, .webm, or .mov for video), and an existing file at that path is rejected before anything is generated. --to skips the local download unless you also pass -o. The CLI generates an idempotency key and prints it after an unclear failure; retry with that same --idempotency-key to recover the original job instead of starting another. On MCP, pass kind: "image", kind: "svg", or kind: "video" and a caller-generated idempotency_key to media_generate.

Next steps

Once the company knows things, set up the systems it runs on: Managed Setup.