---
title: "Call the getBrandProfile MCP tool"
method: POST
path: "/api/v1/actions/getBrandProfile"
tags: ["Actions"]
---

# Call the getBrandProfile MCP tool

`POST /api/v1/actions/getBrandProfile`

## Request

- Base URL: `https://app.reachium.io`
- URL: `https://app.reachium.io/api/v1/actions/getBrandProfile`
- Auth: HTTP bearer

Read the workspace's brand profile. Without arguments: the compact summary (company name, industry, target audience, tone, selling features, mission, promise, products, beliefs, pillars, objection/case-study counts, has_knowledge, sections_filled). With sections ("all" or a list of section names): the FULL contents of each section plus the sources ledger, which is what to read before researching, editing, or replacing anything. Call before writing campaign or post copy. If it returns exists:false and your key has the write scope, research the company and propose a profile with updateBrandProfile (see getPlaybook("copywriting", "brand-profile-research")); on a read-only key, ask the user to fill in their brand profile in the Reachium app.

Called through the Actions bridge: the response is that tool's own result, wrapped as `{ data: <tool result> }` under HTTP 200. Billing, daily-cap, and confirm-step outcomes are embedded INSIDE `data`, never remapped to an HTTP status (see the templated `/api/v1/actions/{toolName}` operation above for the full protocol, and `x-mcp-actions` for this tool's machine-readable scope/cap/confirm_behavior fields). Authentication, request-shape, and optional idempotency-protocol failures still use their documented non-200 statuses.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `sections` union: Return the FULL stored contents of these sections (or "all"), plus the sources ledger. Omit for the compact summary. Read with "all" before researching or replacing anything.
    - 'all'
    - string[]

## Response `200`

The result of calling this tool.

- object
  - `data` unknown, required
  - `error` unknown, required

## Other responses

- `400`: The request body was not a JSON object (code invalid_request), or Idempotency-Key is malformed (code invalid_idempotency_key).
- `401`: Missing or invalid API key. Send `Authorization: Bearer rmcp_...` (code unauthorized).
- `403`: This tool is out of the key’s granted scope (code insufficient_scope).
- `409`: This Idempotency-Key has an unresolved in-flight or ambiguous result (code request_in_flight). Reconcile before using a new key.
- `422`: This Idempotency-Key was already used with a different request body (code idempotency_key_reuse).
- `429`: Rate limited: shared `mcp:ip:{ip}` (600/60s) or `mcp:key:{keyId}` (120/60s) bucket, the SAME buckets the MCP endpoint uses (code rate_limited).
- `500`: Unhandled server error (code internal_error).

## Changes

- **2026-10-20** `11682826692b`: 10 info
  - added the new `category_name` enum value to the request property `sections/anyOf[subschema #2]/items/`
  - added the new `content_prefs` enum value to the request property `sections/anyOf[subschema #2]/items/`
  - added the new `exclusions` enum value to the request property `sections/anyOf[subschema #2]/items/`
  - added the new `field_meta` enum value to the request property `sections/anyOf[subschema #2]/items/`
  - …6 more

[Operation history](https://skmtc.dev/reachium/apis/reachium-api/changes/api/v1/actions/getBrandProfile/post.md)

---

[API](https://skmtc.dev/reachium/apis/reachium-api.md) · [All operations](https://skmtc.dev/reachium/apis/reachium-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reachium/apis/reachium-api/revisions/30c16b30b499?raw)
