Company Knowledge
Give your agent what it needs to know about the company by saving it to the Library, and manage Library files.
Put what your agent needs to know about the company in the Library: the pitch, the market, customer notes, and decisions. Every agent on the company reads it.
Add What You Already Know
Save a document as a text file, or have your agent save a web page:
| MCP | CLI | API |
|---|---|---|
From a terminal, cofounder library write <local-file> <department/path>
copies a local file in. Start with the pitch, the audience, the constraints,
and the competitors, since your agent uses them for every task after.
The Library
The Library holds files: specs, exports, decks, code, anything your agent
might read or run later. Paths look 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.
These CLI commands read and write local files:
| CLI | What it does |
|---|---|
| Browse folders and files in a department | |
| Print a text file | |
| Create or replace a text file from a local file; replays a lost response | |
| Upload any file, including images and PDFs; replaces the file at the exact path | |
| Save a Library file locally; overwrites |
The same operations as tools:
| MCP | CLI | API |
|---|---|---|
files list --querymatches names and details.searchlooks inside files.urls ingestsaves a web page or document by URL.files deletearchives the file so it no longer shows up.
To edit a file without overwriting someone else's change, take the version
token that files get returns with the text and pass it to
files content publish as --base-revision-token. If someone changed the
file since, the edit is refused. Read it again, or add
--overwrite-stale-content to replace it anyway.
If library write or library_text_write times out, retry with the same
--idempotency-key (idempotency_key on MCP). You get back the file the
first write made instead of a second copy.
Upload From an Agent
cofounder library upload uploads in one command. An agent calling tools
uploads in three steps, for files up to 32 MiB:
| MCP | CLI | API |
|---|---|---|
startreturns an upload URL. Keep it private, because anyone with it can write to it.- PUT the file's bytes to that URL.
- Call
finalizewith the part number and ETag from each PUT. Nothing is saved until then. If the transfer fails,cancelfrees the file name.
If the path is taken, the file is saved as name_2.ext instead. Pass
overwrite to start (--overwrite on library upload) to replace the
existing file. The agent must be able to read the file itself, so a hosted
agent can't upload a file from your machine.
Agents on MCP can also read Library files as resources. See MCP Beyond Tools.
Generate Images, SVGs, Video, and Speech
Generated media is saved to the Library, and the CLI also downloads it to your current folder.
| MCP | CLI | API |
|---|---|---|
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 generate --kind audio --prompt "Welcome to our weekly update." --voice Kore --instructions "Warm and calm." -o welcome.wav
cofounder media generate --kind audio --prompt "Your order is ready." --to marketing/order-ready.wav
cofounder media get --job-id <job-id>Generation costs money. When an estimate is available, the CLI prints an upper-bound cost when the job starts. The final charge is based on actual usage.
- Images usually finish while the command waits.
- SVG makes a vector file for logos, icons, and
illustrations:
quiverai/arrow-2by default (under a minute), or--model quiverai/arrow-2-telosfor complex designs (several minutes). Describe the canvas shape in the prompt. SVG takes--referencebut not--fromor--size. - Video takes longer. Start it with
--no-wait, then runmedia get, which downloads the files once they're done. - Speech makes a WAV file. Put exactly the words to speak in
--prompt.--voiceselects the speaker voice (Kore by default). Use--instructionsfor tone, accent, or pace; these directions are not spoken. The default audio model isgoogle/gemini-3.8-flash-tts; use--modelto choose another. Company brand settings do not change speech. - For visual media,
--reference(repeatable) adds style or identity images.--fromanimates a still image. Local files you pass are uploaded to the Library first. Speech does not take--reference,--from, or--size.
Each request makes one output. Without --to, it gets a generated name under
your department (general/ for CLI and API-key callers). With --to, it is
saved at 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; .wav for speech), and an existing file at that path is rejected
before anything is generated. --to skips the local download unless you also
pass -o.
If a request fails unclearly, the CLI prints a key. Retry with that
--idempotency-key to get the original result instead of paying for
another. On MCP, pass kind: "image", kind: "svg", kind: "video", or
kind: "audio" and your own idempotency_key to media_generate. For speech,
put the words to speak in prompt, choose the speaker with voice, and put
delivery directions in instructions. Omitted voice uses Kore, and speech
is saved as WAV audio. A to destination for speech must end in .wav.