PendiumDocs

Brand voice, factsheet, and profile

Read and edit the brand voice, factsheet, and company profile that ground every piece of content.

Brand voice, the factsheet, and the company profile are a brand's source-of-truth context: how it writes, what it does, and who it's for. Read these before generating any content so it matches the brand; edit them to keep the brand's positioning current. This context is what content workflows draw on when writing — see Build a workflow.

When to use

Read (get_*) before writing content, so tone and facts are accurate. Patch by hand (update_*) for targeted edits. Rebuild from the knowledge base (rebuild_brand_voice / regenerate_factsheet) when the underlying material has changed and you want a fresh pass. A field returned as null is empty in Pendium, not unsupported.

Typical sequence

  1. get_brand_voice, get_factsheet, and/or get_company_profile to load current context.
  2. Edit by hand: update_brand_voice, update_factsheet, update_company_profile.
  3. Or regenerate from knowledge: rebuild_brand_voice, regenerate_factsheet (background, Paid).

Tools

get_brand_voice

Get brand voice guidelines plus the core company profile — voice summary, tone traits, style guide, emotional tone targets, storytelling style, do/don't examples, writing examples, visual aesthetics, and the positioning fields (what we do, offerings label, who it's for, target audience, key facts, credibility signals, AI-ready answers, business profiles, and more). Use it to write content that matches the brand's tone.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to get brand voice for.

Either brandVoice or companyProfile may be null if the brand hasn't completed onboarding for that data. For only the company profile (every stored field), use get_company_profile.

update_brand_voice

Patch a brand's voice guidelines — the tone and style settings that steer how content is written. Partial update: only the fields you pass change; object fields (storytellingStyle, examples, writingExamples, visualAesthetics) are replaced wholesale. Synchronous, no LLM call, no credit cost. Pass at least one field — an all-empty update is rejected. Call get_brand_voice first to see current values.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent whose brand voice to update.
voiceSummarystringNoHow the brand communicates — tone, personality, positioning.
formalityLevelenumNocasual, neutral, or professional.
sentenceLengthenumNoshort, medium, or long.
useOfEmojisenumNonever, sometimes, or often.
useOfHashtagsenumNominimal, moderate, or strategic.
preferredPerspectivestringNoPreferred narrative perspective (e.g. first-person, third-person, mixed).
coreToneTraitsarrayNoCore tone traits (replaces the existing list). Each item is { trait, description }.
emotionalToneTargetsarrayNoEmotional goals for content, e.g. ["inspire action", "build trust"] (replaces the existing list).
storytellingStyleobjectNo{ narrativePreference, callToActionStyle } (replaces the existing object).
examplesobjectNoDo / don't examples: { do[], dont[] } (replaces the existing object).
writingExamplesobjectNo{ headlineExample, captionExample, responseExample } (replaces the existing object).
visualAestheticsobjectNo{ typography, designAesthetic, logoPresence, logoStyle } (replaces the existing object).

The style enums plus preferredPerspective are stored under styleGuide; passing only some leaves the rest of styleGuide untouched. To edit the company profile instead, use update_company_profile. To rebuild the whole voice from the knowledge base, use rebuild_brand_voice.

rebuild_brand_voice

Regenerate the brand voice from the agent's knowledge base, falling back to the company profile when no knowledge sources exist. Runs in the background — returns immediately after enqueueing (status: "queued"); the rebuilt voice lands a short while later. Already-populated fields are preserved. Poll get_brand_voice after a minute or two to see the result.

Authentication: Paid — requires a Starter or Pro plan (LLM regeneration).

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent whose brand voice to rebuild.

To patch individual voice fields by hand instead (no plan requirement), use update_brand_voice.

get_factsheet

Get the brand's factsheet — a comprehensive markdown overview of the company, its products, positioning, and key facts. Auto-generated during onboarding from website content and optionally refined by the brand owner. Use it as foundational context when writing any content.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to get the factsheet for.

Returns content (markdown), autoGeneratedAt, lastEditedAt, and interviewAnswers (onboarding responses — differentiators, customers, etc.). The factsheet field is null if the brand hasn't completed onboarding.

update_factsheet

Replace the brand's factsheet content. This overwrites the whole factsheet with the text you provide (it's not a merge). Synchronous, no LLM call, no credit cost. The change takes effect immediately across the dashboard's brand-context surfaces. Use get_factsheet first to see the current content.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent whose factsheet to update.
contentstringYesThe full factsheet content (replaces the existing factsheet).

To regenerate it from the knowledge base instead, use regenerate_factsheet.

regenerate_factsheet

Regenerate the brand factsheet from the agent's knowledge base. Runs in the background — returns immediately after enqueueing (status: "queued"); the new factsheet lands a short while later and replaces the existing one even if a factsheet already exists. Poll get_factsheet after a minute or two to see the result.

Authentication: Paid — requires a Starter or Pro plan (LLM regeneration).

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent whose factsheet to regenerate.

To set the factsheet text by hand instead (no plan requirement), use update_factsheet.

get_company_profile

Get the complete company profile — every stored positioning field, exactly as entered in the Pendium UI. This is the full read-only export of the brand's source-of-truth positioning data.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to get the company profile for.

Includes offeringsLabel, whatWeDo, whoItsFor (personas), targetAudience, keyFacts, credibilitySignals, aiReadyAnswers, businessProfiles, and more. companyProfile is null if the brand hasn't created a profile yet; any individual field returned as null is empty, not unsupported. For brand voice (tone, style guide, writing examples), use get_brand_voice.

update_company_profile

Patch a brand's company profile — what it does, who it's for, key facts, credibility signals, offerings, AI-ready answers, and more. Partial update: only the fields you pass change; array/object fields are replaced wholesale. Synchronous, no LLM call, no credit cost. Pass at least one field — an all-empty update is rejected. Use get_company_profile first to see current values.

Authentication: Required.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent whose company profile to update.
namestringNoCompany or brand name.
taglinestringNoCompany tagline or slogan.
industrystringNoPrimary industry or sector.
websitestringNoCompany website URL.
descriptionstringNoComprehensive company description.
missionStatementstringNoCompany mission or purpose statement.
uniqueValuePropositionstringNoWhat makes the company unique.
geographicFocusstringNoGeographic market focus.
brandPersonalitystringNoBrand personality description.
whatWeDostringNoRich explanation of what the company does (2-4 sentences).
offeringsLabelenumNoOfferings category label: Services, Products, or Features.
productsOrServicesarrayNoProducts or services offered (replaces the existing list).
competitorsOrPeersarrayNoCompetitors or peer brands (replaces the existing list).
credibilitySignalsarrayNoTrust signals — awards, partnerships, metrics (replaces the existing list).
keyFactsarrayNoBusiness facts — each item is { label, value } (replaces the existing list).
whoItsForarrayNoTarget personas — each item is { title, description, painPoints[] } (replaces the existing list).
targetAudienceobjectNoStructured audience { demographics, psychographics, keyPainPoints, desiredOutcomes } (replaces the existing object).
aiReadyAnswersarrayNoQ&A pairs — each item is { question, answer } (replaces the existing list).
socialHandlesobjectNoPer-platform handles { instagram, facebook, linkedin, twitter_x, tiktok, youtube } (replaces the existing object — include every handle you want to keep). Scrapeable profiles (LinkedIn company pages, YouTube channels) are also read into the brand's knowledge base in the background; changing or clearing one cleans up the old profile's knowledge automatically.
businessProfilesobjectNoExternal directory profile URLs (replaces the existing object).
keyPagesarrayNoCurated brand pages for internal linking — each item is { url, title, description?, instructions? } (replaces the existing list).
toneExamplesobjectNoExample on-brand content { websiteExcerpt?, socialMediaExcerpt? } (replaces the existing object).

To edit brand voice (tone, style, writing examples) instead, use update_brand_voice.

On this page