Server data from the Official MCP Registry
24 tools for evidence-graded clinical queries, hormones, peptides, longevity & drug interactions.
24 tools for evidence-graded clinical queries, hormones, peptides, longevity & drug interactions.
Remote endpoints: sse: https://mcp.hormonaly.ai/sse
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
Endpoint verified · Requires authentication · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"io-github-hormonaly-ai-hormonaly": {
"url": "https://mcp.hormonaly.ai/sse"
}
}
}From the project's GitHub README.
The AI-native clinical OS for peptide, hormone, and longevity medicine.
This repository is the public-facing integration reference for enterprise partners and API integrators. The MCP server source is published at Hormonaly-ai/hormonaly-platform. For clinical access, visit hormonaly.ai.
Hormonaly combines three pillars into one platform:
By the numbers:
| Metric | Value |
|---|---|
| Protocols | 594+ across 31 clinical categories |
| Studies indexed | 10,000+ |
| AI agents | 40+ specialist + background agents |
| Design partner clinics | 18 |
| Clinicians trained | 1,000+ |
| Countries | 5 |
| Quality pipeline checks | 13 per response |
| Citation verification | PubMed PMID-validated, 4s timeout |
Core products available via API:
| Product | Description |
|---|---|
| Helix | Clinical intelligence engine — multi-agent RAG, GRADE-scored answers, streaming SSE |
| Scribe | SOAP/DAP/Narrative clinical note generator with citation grounding |
| PharmacyOS | Compounding-pharmacy intelligence — protocols, interactions, Rx generation |
| Workspace | Full multi-panel clinical suite — enterprise/partner access |
| MCP Server | @hormonaly/mcp-server — 24 tools for Claude Desktop and agent frameworks |
Hormonaly is built on a 42-agent orchestration architecture organized into six categories: Evidence, Research, Clinical, Content, Copilot, and Extraction — plus five continuously-running background agents.
Every Helix API call flows through the same deterministic pipeline:
Client query
│
▼
NeMo Guardrails (PII redaction · off-topic filter)
│
▼
Agent Router (intent classification → tier selection)
│
├── TIER_1_BEST: Claude Sonnet 4.6 → GPT-4o fallback (complex/clinical queries)
├── TIER_2_BALANCED: Claude Sonnet 4.6 → GPT-4o fallback (Scribe, CDS, Rx)
└── TIER_3_FAST: Claude Haiku 4.5 → GPT-4o Mini fallback (free tier, Three-Lens scoring)
│
▼
Multi-Database RAG Retrieval (6 databases · 80K token cap)
│
▼
Cross-Encoder Reranker (threshold ≥ 0.35, fallback 0.15)
│
▼
NeMo Parse — Full-text PMC enrichment (top 5 citations)
│
▼
Supervisor/Worker agents (complex multi-compound queries)
│
▼
Quality Gate (13 checks · 70% composite threshold · async)
│
▼
Citation Grounding (PMID verification · 4s timeout per citation)
│
▼
NeMo Output Guardrail (dosing safety scan · ⚠️ inline flags)
│
▼
Streaming SSE response → client
| Category | Agents | Role |
|---|---|---|
| Evidence Agent | Primary | Searches 6 biomedical databases, grades findings |
| Safety Agent | Primary | Screens interactions, contraindications, risk factors |
| Protocol Agent | Primary | Retrieves compound protocols and monitoring requirements |
| Contradiction Agent | Primary | Surfaces disagreeing studies, reconciles evidence position |
| Clinical Decision Agent | Primary | Synthesizes structured clinical recommendation |
| Quality Gate | Primary | 13 automated checks on every response |
| Background Agents (×6) | Autonomous | Evidence refresh, safety monitoring, knowledge enrichment, protocol audit, stale-check, user-monitor notifications — run continuously |
| Query Type | Model | Max Tokens | Output |
|---|---|---|---|
| Standard clinical | Claude Sonnet 4.6 | 4,000 | Streaming SSE + evidence grade + citations |
| Complex (3+ compounds / 30+ words) | Claude Sonnet 4.6 | 6,000 | Streaming SSE + extended synthesis |
| Evidence mode | Claude Sonnet 4.6 | 6,000 | Deeper literature synthesis |
| Extended Thinking / Deep Analysis | Claude Sonnet 4.6 (extended) | 16,000 | SSE + collapsible reasoning panel |
| Three-Lens Scoring | Claude Haiku 4.5 | 600 | JSON: Longevity / Health / Performance scores + verdict |
| Multi-agent supervisor/worker | Claude Sonnet 4.6 | 4,000 | SSE + orchestration_steps[] |
| Scribe / Rx / Pamphlet | Claude Sonnet 4.6 | 400–4,096 | Structured template (SOAP / DAP / Narrative / Rx) |
| Free-tier (all types) | Claude Haiku 4.5 | Same | Same format; shorter context, reduced RAG chunks |
Model routing note: All tiers use a primary + fallback chain. TIER_1/TIER_2 primary is Claude Sonnet 4.6 with GPT-4o as fallback; TIER_3 primary is Claude Haiku 4.5 with GPT-4o Mini fallback. Gemini 2.5 Flash is available as a TIER_3 tertiary fallback.
Base URL: https://hormonaly.ai/api/v1
Auth: Authorization: Bearer YOUR_API_KEY on every request.
Machine-readable OpenAPI spec: GET /api/v1/helix/openapi.json
All endpoint paths below are relative to the base URL.
POST /helix/querySubmit a clinical question and receive a full Helix response with evidence grade, citations, and clinical verdict.
Request:
{
"query": "What is the evidence for BPC-157 in tendon repair?",
"mode": "evidence",
"stream": true
}
Response (streaming SSE):
data: {"type":"agent_step","step":"classifying intent"}
data: {"type":"agent_step","step":"searching evidence","sources":26}
data: {"type":"agent_step","step":"verifying citations"}
data: {"type":"content","text":"BPC-157 has demonstrated..."}
data: {"type":"metadata","evidence_grade":"C","confidence":62,"verdict":"CONSIDER","citations":5,"sources_consulted":26}
data: {"type":"done"}
Response metadata fields:
| Field | Type | Description |
|---|---|---|
evidence_grade | "A" | "B" | "C" | "D" | GRADE rating — A = strong RCTs, D = expert opinion/preclinical |
confidence | 0–100 | Composite score from GRADE, citation density, human vs preclinical, inter-source agreement |
citations | number | Verified PubMed citations included in response |
sources_consulted | number | RAG chunks retrieved from evidence database |
agent_type | string | Which specialist agent handled the query |
verdict | "ADOPT" | "CONSIDER" | "WATCH_AND_WAIT" | "AVOID" | "INSUFFICIENT_DATA" | Three-Lens clinical verdict |
usage | object | Current token usage toward monthly budget |
GET /helix/protocols/:compoundLook up evidence-quality-rated protocols for a specific compound.
Example: GET /helix/protocols/bpc-157
Response:
{
"compound": "bpc-157",
"evidence_grade": "C",
"protocols": [
{
"indication": "Tendon repair",
"dose_range": "200–500 mcg/day",
"route": ["subcutaneous", "intramuscular"],
"cycle_duration": "4–12 weeks",
"monitoring": ["liver enzymes at baseline", "symptom review at 4 weeks"]
}
],
"interactions": [],
"citations": 5
}
POST /helix/dossierGenerate a comprehensive evidence dossier for a compound (async job). Advanced or Enterprise tier required.
Request:
{ "compound": "semaglutide", "sections": ["mechanism", "efficacy", "safety", "dosing"] }
Response: { "job_id": "dossier_abc123", "status": "queued" }
Poll with GET /helix/dossier/:job_id until status: "complete".
POST /helix/compareCompare 2–4 protocols head-to-head across evidence grade, safety, dosing, and clinical readiness. Advanced or Enterprise tier required.
Request:
{ "compounds": ["testosterone-cypionate", "testosterone-enanthate"] }
GET /helix/healthService health check. No authentication required.
{ "status": "ok", "latency_p50_ms": 4200, "citation_coverage": "99%" }
Package: @hormonaly/mcp-server
The Hormonaly MCP server exposes 24 tools that allow Claude Desktop, Cursor, or any MCP-compatible agent to query the full Helix clinical intelligence stack directly — with no HTTP client code required on your side.
The MCP server source is available in our GitHub repository. Clone and build locally:
git clone https://github.com/Hormonaly-ai/hormonaly-platform.git
cd hormonaly-platform/mcp/hormonaly-mcp-server
npm install && npm run build
Then configure Claude Desktop as follows:
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"hormonaly": {
"command": "node",
"args": ["/path/to/hormonaly-mcp-server/dist/index.js"],
"env": {
"HORMONALY_API_URL": "https://hormonaly.ai",
"HORMONALY_API_KEY": "YOUR_API_KEY"
}
}
}
}
Restart Claude Desktop — tools appear immediately.
HTTP/SSE mode (for server-side agents):
HTTP_PORT=3100 node dist/index.js
# SSE: GET http://localhost:3100/sse?sessionId=YOUR_ID
# POST: POST http://localhost:3100/messages?sessionId=YOUR_ID
# Health: GET http://localhost:3100/health
See the mcp/README.md for full setup instructions.
Live · Published May 2026 · Registry: registry.modelcontextprotocol.io
The Hormonaly MCP server is deployed as a remote HTTP/SSE server and listed on the official MCP Registry as io.github.Hormonaly-ai/hormonaly. Enterprise customers using Claude.ai get a one-click Connect experience — no local installation, no Docker, no claude_desktop_config.json edits required.
| Property | Value |
|---|---|
| SSE endpoint | https://mcp.hormonaly.ai/sse |
| Registry ID | io.github.Hormonaly-ai/hormonaly |
| Auth header | x-api-key: hk_live_... (Partner API key) |
| Infrastructure | GCP Cloud Run · Cloudflare DNS · TLS provisioned by GCP |
hk_live_... Partner API key (from Partner Portal → API Keys)| Tool group | Auth required | Examples |
|---|---|---|
| Protocol, Evidence, Compound tools (10 tools) | None — public read access | protocol_search, evidence_search, compound_get_dosing |
| Helix & agentic tools (14 tools) | API key required | helix_query, run_clinical_workflow, helix_deep_analysis |
| User tools (4 tools) | Session token | user_get_profile, monitor_protocol_updates |
| Admin tools (3 tools) | Admin session | admin_get_stats, admin_list_users |
Partner API keys start with hk_live_ and are issued from the Partner Portal. The key is passed as the x-api-key SSE header — Claude.ai will prompt for it on first connect.
| Tool | Description | Auth |
|---|---|---|
helix_query | Clinical question → evidence-graded answer with citations and confidence score | API key |
helix_compare | Compare 2–4 compounds head-to-head (Advanced/Enterprise) | API key |
helix_protocol | Get all protocols for a compound from the Helix API | API key |
helix_dossier_start | Start an async dossier generation job (Advanced/Enterprise) | API key |
helix_dossier_status | Poll dossier job status by job_id | API key |
helix_deep_analysis | Extended analysis with full RAG pipeline, Three-Lens scoring, and PMID citation list | API key |
run_clinical_workflow | Full supervisor/worker multi-agent workflow for complex clinical questions | API key |
| Tool | Description | Auth |
|---|---|---|
protocol_search | Search protocol library by compound, category, or condition | Public (no auth) |
protocol_get | Get full protocol details by ID or slug | Public (no auth) |
protocol_list_categories | List all 31+ protocol categories with counts | Public (no auth) |
protocol_get_interactions | Check interactions between a set of compounds | Public (no auth) |
| Tool | Description | Auth |
|---|---|---|
evidence_search | Search PubMed for research on a compound or condition | Public (no auth) |
evidence_get | Get full evidence record by ID | Public (no auth) |
evidence_grade | Grade a set of PMID references using GRADE framework — returns A/B/C/D per study with rationale | Public (no auth) |
| Tool | Description | Auth |
|---|---|---|
compound_search | Search the compound database by name or category | Public (no auth) |
compound_get_interactions | Get all known interactions for a compound slug | Public (no auth) |
compound_get_dosing | Get evidence-based dosing ranges, routes, and cycle guidance | Public (no auth) |
| Tool | Description |
|---|---|
user_get_profile | Get current user's profile |
user_get_usage | Get AI usage stats for current user |
user_get_saved_protocols | Get protocols saved by current user |
monitor_protocol_updates | Check saved protocols for stale evidence (>90 days); returns review_recommended flag |
| Tool | Description |
|---|---|
admin_get_stats | Get platform-wide statistics |
admin_list_users | List users with optional search and pagination |
admin_get_ai_costs | Get AI cost breakdown by model and endpoint |
Three tools activate the full multi-agent pipeline:
run_clinical_workflow — Supervisor/worker pattern. Decomposes complex clinical questions into 3–4 parallel sub-tasks (evidence search, interaction check, protocol lookup, clinical synthesis), dispatches specialist agents, and returns a synthesized report with orchestration_steps[] showing each agent's task, result, timing, and confidence. Latency: 30–90 seconds for complex queries.
helix_deep_analysis — Extended deep analysis using the full RAG pipeline. Returns Three-Lens scoring across three independent clinical lenses (Longevity / Health & Disease / Performance), full PMID citation list, confidence breakdown by section, and overall evidence grade (A–D).
monitor_protocol_updates — Checks saved protocols against a 90-day staleness threshold. Returns a review_recommended flag and last evidence update date per protocol. Use weekly/monthly to stay current with the literature.
All 24 tool schemas. The inputSchema block is what Claude Desktop and MCP clients use to validate parameters before sending.
helix_query
{
"name": "helix_query",
"inputSchema": {
"type": "object",
"properties": {
"question": { "type": "string", "description": "Clinical question", "maxLength": 10000 },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"detail_level": { "type": "string", "enum": ["clinical","summary"], "default": "clinical" },
"include_citations":{ "type": "boolean", "default": true },
"include_three_lens":{ "type": "boolean", "default": false },
"api_key": { "type": "string", "description": "Override env API key" }
},
"required": ["question"]
}
}
helix_compare (Professional/Enterprise)
{
"name": "helix_compare",
"inputSchema": {
"type": "object",
"properties": {
"compounds": { "type": "array", "items": { "type": "string" }, "minItems": 2, "maxItems": 3 },
"indication": { "type": "string", "default": "General comparison" },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"api_key": { "type": "string" }
},
"required": ["compounds"]
}
}
helix_protocol
{
"name": "helix_protocol",
"inputSchema": {
"type": "object",
"properties": {
"compound": { "type": "string", "maxLength": 200 },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"api_key": { "type": "string" }
},
"required": ["compound"]
}
}
helix_dossier_start (Professional/Enterprise)
{
"name": "helix_dossier_start",
"inputSchema": {
"type": "object",
"properties": {
"compound": { "type": "string", "maxLength": 500 },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"api_key": { "type": "string" }
},
"required": ["compound"]
}
}
helix_dossier_status
{
"name": "helix_dossier_status",
"inputSchema": {
"type": "object",
"properties": {
"job_id": { "type": "string" },
"api_key": { "type": "string" }
},
"required": ["job_id"]
}
}
helix_deep_analysis (Enterprise)
{
"name": "helix_deep_analysis",
"inputSchema": {
"type": "object",
"properties": {
"topic": { "type": "string", "description": "Clinical topic for deep analysis", "maxLength": 10000 },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"api_key": { "type": "string" }
},
"required": ["topic"]
}
}
run_clinical_workflow
{
"name": "run_clinical_workflow",
"inputSchema": {
"type": "object",
"properties": {
"question": { "type": "string", "description": "Complex clinical question", "maxLength": 10000 },
"patient_context": { "type": "string", "description": "Optional: age, sex, conditions, medications" },
"language": { "type": "string", "enum": ["en","ar"], "default": "en" },
"api_key": { "type": "string" }
},
"required": ["question"]
}
}
monitor_protocol_updates (session auth)
{
"name": "monitor_protocol_updates",
"inputSchema": {
"type": "object",
"properties": {
"session_token": { "type": "string" },
"compound_filter": { "type": "array", "items": { "type": "string" }, "description": "Filter to specific compounds" }
}
}
}
protocol_search
{
"name": "protocol_search",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"category": { "type": "string", "description": "e.g. 'weight-loss', 'hormones'" },
"limit": { "type": "number", "default": 10 }
},
"required": ["query"]
}
}
protocol_get
{
"name": "protocol_get",
"inputSchema": {
"type": "object",
"properties": { "id": { "type": "string" } },
"required": ["id"]
}
}
protocol_list_categories
{
"name": "protocol_list_categories",
"inputSchema": { "type": "object", "properties": {} }
}
protocol_get_interactions
{
"name": "protocol_get_interactions",
"inputSchema": {
"type": "object",
"properties": {
"compounds": { "type": "array", "items": { "type": "string" }, "minItems": 2,
"description": "Compound slugs to screen" }
},
"required": ["compounds"]
}
}
evidence_search
{
"name": "evidence_search",
"inputSchema": {
"type": "object",
"properties": {
"compound": { "type": "string" },
"max_results": { "type": "number", "default": 10 }
},
"required": ["compound"]
}
}
evidence_get
{
"name": "evidence_get",
"inputSchema": {
"type": "object",
"properties": { "id": { "type": "string" } },
"required": ["id"]
}
}
evidence_grade
{
"name": "evidence_grade",
"inputSchema": {
"type": "object",
"properties": {
"ids": { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 20,
"description": "Evidence record IDs to GRADE-score" }
},
"required": ["ids"]
}
}
compound_search
{
"name": "compound_search",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"category": { "type": "string" }
},
"required": ["query"]
}
}
compound_get_interactions
{
"name": "compound_get_interactions",
"inputSchema": {
"type": "object",
"properties": { "slug": { "type": "string", "description": "e.g. 'semaglutide'" } },
"required": ["slug"]
}
}
compound_get_dosing
{
"name": "compound_get_dosing",
"inputSchema": {
"type": "object",
"properties": { "slug": { "type": "string", "description": "e.g. 'testosterone-cypionate'" } },
"required": ["slug"]
}
}
user_get_profile
{
"name": "user_get_profile",
"inputSchema": {
"type": "object",
"properties": { "session_token": { "type": "string" } }
}
}
user_get_usage
{
"name": "user_get_usage",
"inputSchema": {
"type": "object",
"properties": { "session_token": { "type": "string" } }
}
}
user_get_saved_protocols
{
"name": "user_get_saved_protocols",
"inputSchema": {
"type": "object",
"properties": { "session_token": { "type": "string" } }
}
}
admin_get_stats
{
"name": "admin_get_stats",
"inputSchema": {
"type": "object",
"properties": { "admin_session_token": { "type": "string" } }
}
}
admin_list_users
{
"name": "admin_list_users",
"inputSchema": {
"type": "object",
"properties": {
"limit": { "type": "number", "default": 20 },
"offset": { "type": "number", "default": 0 },
"search": { "type": "string" },
"admin_session_token": { "type": "string" }
}
}
}
admin_get_ai_costs
{
"name": "admin_get_ai_costs",
"inputSchema": {
"type": "object",
"properties": {
"days": { "type": "number", "default": 30 },
"admin_session_token": { "type": "string" }
}
}
}
Hormonaly uses two independent auth systems — do not mix them:
All /api/v1/* endpoints require:
Authorization: Bearer YOUR_API_KEY
API keys are SHA-256 hashed before storage. The plaintext key is shown exactly once at creation — store it immediately in your secrets manager. If lost, revoke and rotate; there is no recovery path.
Key management: Partner Portal → API Keys (/partner/api)
Keys appear in the portal as a masked prefix (e.g. hk_live_1055...) for visual reference only.
The Partner Portal (/partner/*) uses session-based authentication. Log in at /partner/login with email + password. A session cookie is set. This session does not grant access to the data API, and your Bearer token cannot log you into the portal.
401 immediately.Rate limits apply across all /api/v1/* endpoints on a sliding 60-second window (atomic SQL counter, race-condition safe):
| Plan | Monthly Base | Tokens Included | Rate Limit | Overage Rate | Hard Cap |
|---|---|---|---|---|---|
| API Starter | $499 | 5M tokens | 60 req/min | $25 / 1M | 10M tokens (then 429) |
| API Advanced | $1,999 | 25M tokens | 150 req/min | $25 / 1M | 75M tokens (then 429) |
| API Enterprise | $4,999 | 50M tokens | Custom | $25 / 1M | None (overage billed) |
| Legacy partners (pre-billing) | — | — | 20 req/min | — | — |
Over-limit response: HTTP 429 with Retry-After header.
Burst behavior: The rate limiter uses a sliding 60-second window (atomic SQL counter, cross-instance safe). There is no burst allowance — the counter is evaluated on every request, and once the per-minute ceiling is reached the next request immediately returns 429. Honor the Retry-After value before retrying.
Hard cap semantics: Starter and Advanced plans block at their hard cap (returning 429) until the billing period resets. Enterprise has no hard cap — overage is billed at $25/1M tokens.
Quota alerts: All plans receive email/webhook alerts at 80% and 100% of the included token allowance, so you're never surprised by overage.
Token overage costs are automatically computed and reflected in your monthly invoice. Rates above are per 1M tokens beyond the included allowance.
Current usage is returned in every /api/v1/helix/query response in the usage object and is visible in the Partner Portal under Usage & Billing.
Budget enforcement: Per-plan monthly token budgets are enforced before every call. Calls that would exceed the monthly token allowance or trigger the hard cap are blocked with 429 before any LLM tokens are consumed.
usage ObjectEvery POST /api/v1/helix/query response includes a top-level usage object reflecting your real-time token consumption:
{
"usage": {
"tokensUsedThisMonth": 1234567,
"monthlyTokenBudget": 5000000,
"percentUsed": 24.7,
"hardCapTokens": 10000000,
"hardCapExceeded": false,
"quotaThresholdsCrossed": [80]
}
}
| Field | Type | Description |
|---|---|---|
tokensUsedThisMonth | number | Cumulative tokens consumed in the current billing period |
monthlyTokenBudget | number | Included token allowance for your plan |
percentUsed | number | Percentage of included allowance consumed |
hardCapTokens | number | null | Hard cap in tokens; null = Enterprise (no cap) |
hardCapExceeded | boolean | true when the partner has hit or exceeded their hard cap this period |
quotaThresholdsCrossed | number[] | Quota alert thresholds crossed this period (e.g. [80] = 80% alert fired) |
Billing period scoping: When a Stripe subscription is active,
tokensUsedThisMonthis scoped to Stripe'scurrent_period_start. For partners without an active subscription the counter falls back to the calendar month.
| Endpoint | P50 latency |
|---|---|
POST /api/v1/helix/query | 3–12 seconds |
POST /api/v1/scribe/generate | 15–45 seconds |
GET /api/v1/helix/protocols/:compound | < 200ms |
run_clinical_workflow (MCP) | 30–90 seconds |
All API errors return a JSON body with a stable error.code field that integrators should branch on (rather than parsing the human-readable message).
Error response shape:
{
"error": {
"code": "RATE_LIMITED",
"message": "Request rate exceeded. Retry after 23s.",
"request_id": "req_01HXYZ..."
}
}
| Status | error.code | Meaning | Recommended client behavior |
|---|---|---|---|
400 | INVALID_REQUEST | Malformed JSON, missing required field, or invalid enum value | Fix the request; do not retry as-is |
401 | MISSING_AUTH | No Authorization header | Attach Authorization: Bearer YOUR_API_KEY |
401 | INVALID_KEY | Key not recognized or revoked | Rotate the key via Partner Portal |
403 | TIER_REQUIRED | Endpoint requires Advanced or Enterprise tier | Upgrade plan or use a permitted endpoint |
404 | NOT_FOUND | Compound, protocol, or job ID does not exist | Verify identifier |
422 | VALIDATION_FAILED | Input passed schema parse but failed semantic validation | Inspect error.message for the offending field |
429 | RATE_LIMITED | Per-minute request rate exceeded | Honor the Retry-After header before retrying |
429 | BUDGET_EXCEEDED | Pre-call budget cap (daily or monthly) would be exceeded | Wait for budget window or contact billing |
5xx | INTERNAL_ERROR | Unexpected server error | Retry with exponential backoff (max 3 attempts) |
503 | UPSTREAM_TIMEOUT | A biomedical database or model upstream timed out | Retry after 5–10s; partial results may still be returned |
Idempotency: GET endpoints are always safe to retry. POST /helix/query is safe to retry on 5xx/503. POST /helix/dossier is not idempotent — duplicate calls may create duplicate jobs; check helix_dossier_status before retrying.
All plans include access to /query, /protocols, /status, /openapi.json, /scribe/generate, and /scribe/health. Higher tiers unlock additional endpoints, higher volume, and reduced overage rates.
| API Starter | API Advanced | API Enterprise | |
|---|---|---|---|
| Monthly base | $499 | $1,999 | $4,999 |
| Tokens included / month | 5,000,000 | 25,000,000 | 50,000,000 |
| Overage rate | $25 / 1M tokens | $25 / 1M tokens | $25 / 1M tokens |
| Hard cap | 10M tokens — then 429 | 75M tokens — then 429 | None (overage billed) |
| Quota alerts | 80% + 100% | 80% + 100% | 80% + 100% |
| Rate limit | 60 req/min | 150 req/min | Custom |
Hard cap semantics: When a Starter or Advanced partner hits their hard cap, the API returns
429 BUDGET_EXCEEDEDfor the remainder of the billing period. The counter resets at the start of the next period. Enterprise partners have no hard cap — usage above 50M tokens is billed at $25/1M.
Token usage is tracked per billing period (scoped to Stripe's
current_period_startwhen a subscription is active, or calendar month as a fallback). Current usage is returned in every/api/v1/helix/queryresponse in theusageobject and in the Partner Portal under Usage & Billing.
| Feature | API Starter | API Advanced | API Enterprise |
|---|---|---|---|
/api/v1/helix/query | ✅ | ✅ | ✅ |
/api/v1/helix/protocols/:compound | ✅ | ✅ | ✅ |
/api/v1/scribe/generate | ✅ | ✅ | ✅ |
/api/v1/helix/dossier | ❌ 403 | ✅ | ✅ |
/api/v1/helix/compare | ❌ 403 | ✅ | ✅ |
MCP: helix_compare | ❌ | ✅ | ✅ |
MCP: helix_dossier_start | ❌ | ✅ | ✅ |
| Seats | Up to 5 | Up to 25 | Unlimited (per contract) |
| White-label portal | ❌ | ❌ | ✅ |
| BAA (HIPAA) | ❌ | ❌ | ✅ |
| Dedicated support | ❌ | ❌ | ✅ |
Contact info@hormonaly.ai or see hormonaly.ai/pricing for current plan details.
The Scribe API exposes Hormonaly's clinical note generation engine. Mounted at /api/v1/scribe. Available on all plans.
POST /scribe/generateGenerate a structured clinical note from protocol selections and patient context.
Request:
{
"note_format": "soap",
"patient_context": {
"age": 45,
"sex": "male",
"diagnoses": ["hypogonadism"],
"active_protocols": ["testosterone-cypionate"],
"lab_values": { "total_testosterone": "250 ng/dL", "LH": "1.2 mIU/mL" }
},
"visit_notes": "Patient presents for quarterly follow-up. Reports improved energy levels and libido since dose adjustment 8 weeks ago."
}
Supported note_format values: soap | dap | narrative (default: soap)
Rx & Pamphlet outputs: Prescription (Rx) generation and patient-facing pamphlets are produced via
POST /api/v1/helix/querywith appropriate clinical context — they are not separatenote_formatvalues on/scribe/generate.
Response (~15–45 seconds):
{
"note": "**SUBJECTIVE**\nPatient is a 45-year-old male...",
"interaction_alerts": [],
"monitoring_plan": [
{ "test": "Total testosterone", "interval": "8 weeks", "threshold": "> 800 ng/dL triggers dose review" }
],
"confidence_score": 87,
"evidence_grade": "B"
}
Scribe Intelligence Features:
GET /scribe/healthNo authentication required.
| Control | Implementation |
|---|---|
| API key storage | SHA-256 hash only — plaintext never stored |
| Rate limiting | Atomic SQL counter (sliding 60s window, cross-instance safe) |
| Budget enforcement | Pre-call check; 429 before any LLM tokens consumed |
| Session fixation | regenerate() on every login |
| IDOR protection | All dossiers and engagement records are ownership-checked |
| Mass assignment | Clean — all inputs validated |
| Search injection | All ILIKE/tsquery parameterized via Drizzle ORM |
| Webhook security | HMAC-SHA256 signature verification (Stripe + Resend); idempotency on all events |
| Path traversal | Boundary whitelist on all file-serving endpoints |
| Auth rate limiting | All auth endpoints independently rate-limited (PG-backed, cross-instance) |
| TLS | TLS 1.3 in transit; AES-256 at rest |
| WAF | Cloud Armor active; scanner traffic blocked |
| CSP / HSTS / CORS | All headers configured; report-uri Sentry telemetry active |
| Clinical guardrails | NVIDIA NeMo (input PII redaction, output dosing safety scan) |
| Supply chain | private: true in package.json; dependency audit clean (Mar 2026) |
GCP inherits: SOC 2 Type II, ISO 27001, HIPAA, PCI DSS, 150+ compliance certifications at the infrastructure layer.
Quality benchmarks (internal, May 2026):
| Dimension | Score |
|---|---|
| Citation-grounding pass rate | 100% |
| Safety block rate (on flagged inputs) | 96% |
| RAG retrieval pass rate | 99% |
| Citation faithfulness (PMID-verified) | 97% (≤ 3% unverified citations dropped pre-response) |
Internal benchmarks. Methodology available on request.
Contact the Hormonaly team to request a Partner API account:
You will receive your API key and a cURL quickstart example by email, plus a separate Partner Portal invitation to set up your dashboard at /partner/dashboard.
curl -X POST https://hormonaly.ai/api/v1/helix/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "What is the evidence for semaglutide in metabolic optimization?", "stream": false}'
curl https://hormonaly.ai/api/v1/helix/openapi.json
Feed into openapi-generator, Prism, or Postman for auto-generated client libraries and interactive documentation.
| Resource | URL |
|---|---|
| API Reference | hormonaly.ai/api-docs |
| Technical Manual | hormonaly.ai/manual |
| Partner Portal | hormonaly.ai/partner/login |
| Integration Guide | hormonaly.ai/integration-guide |
| Platform | hormonaly.ai |
| About / Leadership | hormonaly.ai/about |
| Status | status.hormonaly.ai |
Three-Lens is Hormonaly's proprietary multi-domain evidence scoring framework. It evaluates a compound independently through three clinical lenses, producing per-lens efficacy and safety scores, an evidence level (A–E), and a synthesized overall recommendation.
Documentation truncated — see the full README on GitHub.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.