Skip to content
ShapelessAI← Back
The agent team

Brand Memory

The account's durable knowledge - voice, positioning, product facts - and how an agent reads and edits it.

Verified
View as Markdown

Brand Memory is the account's durable knowledge: who the business is, what it sells, how it sounds, what it has already said. It is a small file tree, not a prompt, and every job reads it before it writes anything.

This is the highest-leverage thing an agent can edit. A post with the wrong tone is a symptom; the voice file is the cause. Fix the file and every future post is fixed.

Read it

curl -s https://shapelessai.com/api/workspace -H "Authorization: Bearer $SHAPELESS_API_KEY"
curl -s "https://shapelessai.com/api/workspace/file?path=voice.md" -H "Authorization: Bearer $SHAPELESS_API_KEY"
shapeless brain ls
shapeless brain get positioning.md
// MCP
{ "tool": "brain_tree", "arguments": {} }
{ "tool": "brain_read", "arguments": { "path": "voice.md" } }

GET /api/workspace answers the tree with its completion ring - which parts of the brand are filled in and which are still empty.

Write it

curl -s -X PUT https://shapelessai.com/api/workspace/file \
  -H "Authorization: Bearer $SHAPELESS_API_KEY" -H "Content-Type: application/json" \
  -d '{"path":"voice.md","content":"Plain sentences. No hype. Never say '\''revolutionary'\''."}'
shapeless brain put voice.md --file ./voice.md    # or pipe on stdin
shapeless brain import ./pitch-deck.pdf           # .md, .txt, .pdf, .docx
shapeless brain export --out brain.zip

A file says what it does to a job in optional frontmatter: authority: rule (obeyed) or authority: reference (background), and stale_after: 2026-12-31 (past that day a job is told the file exists, not given its text). With no frontmatter, files under guidelines/ are rules and every other file is a reference.

A write with any other authority, a stale_after that is not a real date, or more than 256 KB is refused with a 400 (frontmatter) or a 413 (size) that says why, and nothing is written: fix the file rather than send it again. POST /api/brain/import answers the same way when a document's text is too big. Only a 502 means Brand Memory is not answering and a resend is right.

Needs write. POST /api/brain/scan reads a link and files what it says into the tree (an NDJSON stream). POST /api/brain/import takes a document. Both are how you fill a new account in one move rather than typing it.

Let an agent finish it

The screen's ring and its "Still open" chips exist for an agent too. GET /api/workspace/onboarding answers what is still empty as the questions a human answers, each with its hint and the file to write; the agent asks, composes the answers as markdown under the question headings, and PUTs the file. Repeat until open is empty.

curl -s https://shapelessai.com/api/workspace/onboarding -H "Authorization: Bearer $SHAPELESS_API_KEY"
shapeless brain onboarding
// MCP
{ "tool": "brain_onboarding", "arguments": {} }
{
  "percent": 41,
  "open": [
    { "path": "voice.md", "question": "How do you sound?", "gainPercent": 18,
      "questions": [ { "level": 1, "question": "How do you sound?", "hint": "Three words..." } ] }
  ],
  "done": false,
  "how": "For each open item: ask the human its questions, write the answers as markdown under the question headings, PUT /api/workspace/file {path, content}, then GET this again until open is empty."
}

On the Brand Memory screen, Let your agent do it mints a read+write key and a prompt to paste into Claude, ChatGPT or any agent - the human answers questions in their own chat and the agent writes the files. Needs read to read, write to fill.

Assets

The brand's real files - logos, fonts, product shots, footage - live beside the text:

shapeless assets list
shapeless assets upload ./logo.png     # prints the media key
MethodPathScopePurpose
GET/api/brain/assets, /api/assetsreadBrand uploads, and the whole asset library.
GET/api/brain/assets/[filename]readStream one asset (Range supported).
PUT/PATCH/DELETE/api/brain/assets/[filename]writeUpload, rename, delete.
GET/api/media/[...key]readStream any media key this account owns.

A media key from here can go straight onto a post (mediaKeys) or onto a job message (mediaKeys). Uploading an asset puts it in the library for reuse; attaching it to a message is what makes this turn's agent look at it. Two different asks - do the one you were asked for.

Standing agents

An agent is a recurring brief the server wakes on its own schedule.

shapeless agents list
shapeless agents create --name "Daily reach" --prompt "..." --days mon,thu --hours 9
shapeless agents edit <id> --status paused
shapeless agents wake <id>              # run it now  [publish]

POST /api/strategies needs write, or publish if the agent is armed to autopublish - arming something that posts without a human is itself a publishing act. Waking one always needs publish. What they propose lands in the queue as proposed; see Posts.