Penta (group dynamics) API
Generate a BG5 Penta — the group-level (trans-auric) energy field for a family or business team of 3 to 5 people, calculated from their birth data. Returns the merged Penta chart with channel dynamics, viability scoring, gaps, and hiring guidance.
Penta returns real data on any Advanced key. The response schema may add fields before general availability and is not covered by the no-breaking-changes guarantee. We will not remove the endpoint silently. See Beta & Roadmap.
Core concepts
A Penta is the BG5 (Business Gene Keys / Human Design for Business) model for the energetic field that forms when 3 to 5 people operate as a single unit — a family or a small business team. Above five people the field shifts to a different structure (the WA/Wave), so Penta is bounded at 3-5 participants.
Instead of analyzing each person's chart, the Penta looks at 12 specific gates across the Throat, G, and Sacral centers. These form 6 Penta channels that map to functional roles (vision, operations, foundation, and resources). A channel is active when the group collectively holds both of its gates, even if no single person holds the entire channel. The result highlights group strengths, structural gaps, and hiring needs.
Each Penta call costs 5 Chart requests, regardless of whether you send 3, 4, or 5 participants. Charts calculate in parallel server-side.
Request
The request body accepts a participants array of 3 to 5 people, each with birth data, plus an optional type selecting the family or business interpretation lens. Each participant uses the same birth-data parameters as the single Chart API.
Response
A successful call returns { success, meta, data }. The meta.type property reflects the requested lens. The data object contains two top-level keys: participants (per-person contribution) and composite (the merged group analysis).
data.participants[] — per-person contribution
| Field | Description |
|---|---|
index | Zero-based position matching the input participants array order |
name | The person's label (your name, or "Person N") |
birthDate / birthTime / birthLocation | Echoed birth data |
bg5Gates | The Penta gates this person holds (subset of the 12 BG5 gates) |
bg5GateDetails[] | Per-gate polarity (conscious / unconscious / both), lines, and planets |
contribution.gateCount | How many of the 12 BG5 gates this person holds |
contribution.gatePct | That count as a percentage of 12 |
contribution.channelsPartial | Penta channels this person touches (one gate) |
contribution.channelsFull | Penta channels this person holds end-to-end (both gates) |
v1Mini | Condensed chart: type, authority, profile, definedCenters, channels |
data.composite — the merged group field
| Field | Description |
|---|---|
gateActivationGrid[] | All 12 BG5 gates with theme, center, direction, who activatedBy, and an activated boolean |
channels[] | The 6 Penta channels: id, name, gates, defined, type (contained = one person holds both gates · electromagnetic = two people · incomplete = not formed), and which participants sit at each gate |
centers | throat, g, sacral — each with defined, activatedGates, contributing participants, gaps, and themeColumns |
gaps.missingGates | BG5 gates no one in the group holds |
gaps.missingChannels | Penta channels the group cannot form |
gaps.dysfunctionNotes | Plain-language notes for each missing gate |
functionalRows | The four functional bands (Discipline / Operations / Internal Flow / Material), each with filled and missing gates |
pentaAnatomy | upper_penta (Vision & Direction) and lower_penta (Foundation & Resources). Each channel carries status, a dynamics typeCode / typeLabel, contributors, and — when inactive — a gapAnalysis |
analyticalMetrics | Group scoring (see below) |
functionalRoles | Map of active channel name → the people who drive it |
hiringLogic | urgentNeeds (top missing gates), urgentNeedsDetail (gate → skill + shadow), and a one-line insight |
Channel dynamics — typeCode / typeLabel
Each Penta channel is classified by how the group forms it:
typeCode | typeLabel | Meaning |
|---|---|---|
EM | Electromagnetic | Two different people each hold one gate of the channel |
COMP | Electromagnetic with Friction | Multiple people hold the gates (compromise dynamic) |
DOM | Solo-Driven | One person holds the whole channel — a potential bottleneck |
MIXED | Mixed (Solo + EM) | A solo holder plus electromagnetic partners |
VOID | Inactive | The channel is not formed; see gapAnalysis |
Scoring — analyticalMetrics
| Field | Description |
|---|---|
viabilityLevel | optimal (all 6 channels) · functional (≥4) · minimal (≥2) · dysfunctional (<2) |
viabilitySummary | Plain-language summary of the viability level |
stabilityScore | 0-100, driven by how many of the 3 backbone channels are active |
visionScore | 0-100, share of the Upper Penta (vision) channels that are active |
actionScore | 0-100, share of the Lower Penta (action) channels that are active |
bottlenecks | People who solo-drive a channel (single points of failure) |
backboneIntegrity | The three backbone channels (15-5, 2-14, 46-29) marked Strong or Missing |
MCP tool: get_penta
The get_penta tool provides this calculation over the MCP server. It takes the same participants and group type, costs 5 Chart requests, and returns the Penta result as a JSON string in result.content[0].text.
MCP arguments participants and type match the HTTP body. The MCP result wraps the analysis as { "type": "<group type>", "data": { /* same participants + composite shape as above */ } }.
Errors and limits
| Constraint | Value |
|---|---|
| Min participants | 3 (fewer returns 400) |
| Max participants | 5 (more returns 400) |
type values | family, business (anything else returns 400) |
| Required tier | advanced_chart |
| Cost | 5 Chart requests per call (flat) |
| Per-participant calc timeout | 10s — a slow participant fails the whole call |
Penta requires the advanced_chart tier. Basic chart keys receive a 403 Forbidden. A missing or malformed participant returns 400 with { "success": false, "error": "Participant N missing required fields" }.