Skip to main content
See Company Knowledge Base for the concepts.

GET /company

  • isEmpty — nothing is filled in, so nothing is injected into runs.
  • needsReview — an auto-drafted profile with actual content is still unconfirmed. A blank draft doesn’t count, so this never puts a review banner over an empty form.
  • confirmedAt: null — still a draft. It is injected anyway, flagged low-confidence, but its constraints / doNotTouch rules stay inactive until confirmed.

PATCH /company

Send only the fields you’re changing. An edit counts as confirmation — you just typed it.
Passing null clears a field. An array always replaces — send the full list.

PATCH /company/apps/:appId

POST /company/confirm

Accepts an auto-draft as-is, without editing it. This is what activates the hard rules.
Confirms the company profile plus every listed app profile. {"confirmed": true} on success.

POST /company/extract

Derives profile fields from business_context.md. Explicit rather than automatic, because it both writes and queues.
  • filled — the field was empty, so the value was written straight in.
  • proposed — the field disagreed, so it became a knowledge patch for you to review.
  • rewordsDropped — proposals that restated your value with less in it, thrown away rather than queued.
  • status: "skipped" with a reason when there’s no document or nothing usable in it.

GET /company/preview

The exact text injected into that app’s runs — profiles and pinned documents together, because that’s what the agent actually receives.
Useful for keeping always-on context under budget: total should stay ≤ 2,500 tokens or it starts displacing the store data the briefing is about.