A technical walkthrough of how Brandstract ingests signals, builds structured brand runtimes, scores alignment, and delivers brand context to every AI tool in your stack.
The Brand Runtime is the core output of Brandstract. It is a versioned, structured object — not a document — with every field carrying a confidence score derived from real sampled content and a source provenance reference.
The runtime is organised into five top-level sections. Fields can be individually accepted, rejected, or edited before the runtime is locked as the canonical brand source.
| brand_profile | Company overview, founding context, market category, target segments |
| brand_signature | Essence, mission, external promise, value proposition, belief system, distinctive assets |
| brand_intelligence | Audience clusters, competitive positioning, cultural context |
| brand_executable | Tone matrix, creative rules, visual language, deployment contexts |
| governance | Hard stops, soft guidelines, brand constraints, channel-level overrides |
| Completeness (40%) | Percentage of required fields populated |
| Confidence quality (40%) | Weighted mean of per-field confidence scores |
| LLM consistency (20%) | Internal consistency pass across the locked runtime |
Brandstract ingests brand signals from multiple source types simultaneously. All sources are attributed — every extracted field traces back to the specific content that produced it.
| Website scraping | Homepage, about, product pages — extracted with SSRF protection on all outbound requests |
| Social channels | TikTok, Instagram, X — captions, post copy, and profile context sampled and source-attributed |
| Document upload | PDF, PPTX, DOCX, TXT — up to 10 MB; chunked extraction with no truncation |
| Rate limits | 5 ingestion requests per 60 seconds per account |
All ingestion results are stored with source metadata. When a brand field is extracted, the runtime records which source produced it, how many samples were used, and when those samples were last collected.
Re-ingestion on any source updates provenance for affected fields while preserving accepted decisions made during review. Confidence scores reflect real signal volume — a field derived from two posts will score lower than one derived from forty.
Every API response includes a _schema block (version, deprecated fields, sunset date) and a _provenance block per data section. Downstream systems can rely on schema versioning for safe upgrades.
| Patch (2.0.x) | New optional fields — backwards compatible, no migration required |
| Minor (2.x.0) | New sections — additive, existing consumers unaffected |
| Major (x.0.0) | Breaking changes — 6-month deprecation window with sunset date in response |
| External API | 60 requests per 60 seconds per API key |
| Ingestion | 5 requests per 60 seconds |
| Creative & prompt | 5 requests per 60 seconds |
| Sandbox keys | bst_sandbox_* — test any endpoint without an account |
| GET /brand/signature | Full brand signature with provenance and confidence scores |
| GET /brand/executable | Creative rules, tone matrix, visual brief — ready for AI consumption |
| GET /brands | List all brand runtimes for the authenticated account |
| POST /brands/:id/truth-score/run | Trigger a Brand Truth Score run against live external signals |
| GET /brands/:id/truth-score | Latest truth score result, gap report, and dimension breakdown |
| POST /api/v1/webhooks | Register a webhook subscription for runtime or truth score events |
The Brandstract MCP server exposes your locked brand runtime as structured resources over Server-Sent Events. AI agents, coding assistants, and creative tools connect once — every downstream call inherits the current locked brand context automatically.
| Endpoint | https://app.brandstract.ai/mcp |
| Transport | Server-Sent Events (SSE) |
| Auth | API key via Authorization: Bearer header |
| Compatible with | AI assistants, IDEs, direct SSE consumers |
| brand_signature | Essence, mission, promise, value proposition, distinctive assets |
| brand_executable | Creative rules, tone matrix, visual language, deployment contexts — structured for AI constraint injection |
| visual_brief | Compiled brief optimised for image and video generation models |
| brand_ideas | Latest locked creative ideas for the active brand runtime |
When the brand team updates and re-locks the runtime, all downstream MCP consumers receive the updated context on their next request. No manual propagation, no stale system prompts.
The Brand Truth Score evaluates how well your published signals match your locked brand identity. It fetches live content from your configured channels, evaluates each piece against structured rubrics, and aggregates across five weighted dimensions.
Every score is derived from real content — no synthetic values or assumptions. A minimum of three dimensions must return evaluable signals for a run to produce a valid result.
Each run produces a structured gap report alongside the score:
| Severity | high / medium / low — determines remediation priority |
| Field path | Specific dimension and runtime field that produced the gap |
| Stated vs observed | What the locked runtime claims; what was found in sampled content |
| Example text | Verbatim excerpt from the sampled signal |
| Recommendation | Specific, actionable remediation suggestion |
Drift is tracked across runs. The trend (improving / degrading / stable) is available alongside each score result and exposed via the truth score history endpoint.
Register webhook endpoints to receive signed notifications when key events occur in the Brandstract platform. Every delivery is signed with HMAC-SHA256 so receiving systems can verify authenticity before processing.
| Header | X-Brandstract-Signature: sha256=<hmac> |
| Algorithm | HMAC-SHA256 using your subscription secret |
| Payload | JSON — event type, timestamp, runtime ID, and event-specific data |
Subscriptions auto-deactivate after 4 consecutive failures. All delivery attempts — including status codes and response bodies — are stored and retrievable.
Locked runtimes can be branched into sub-brands — each with its own tone-of-voice, visual rules, and audience targeting — while preserving full lineage back to the parent. Sub-brands inherit any field not explicitly overridden.
A field-level diff is computed across the five runtime sections, classifying each field as overridden, inherited, or new. This makes the relationship between parent and sub-brand explicit and auditable.
| Branch endpoint | POST /runtime/:id/branch |
| List sub-brands | GET /runtime/:id/sub-brands |
| Lineage | GET /runtime/:id/lineage — parent ID, parent brand name, is_sub_brand flag |
| Parent diff | GET /runtime/:id/parent-diff — overridden / inherited / new per section |
| Override scope | Any field in any of the five runtime sections can be overridden independently |
Sandbox keys are available immediately — test every endpoint without an account.
Get early access