API reference, signal schema, integration specs, AI pipeline, security, and developer resources.
Signals are the raw material Clarion operates on. The platform supports three ingestion methods: CSV file upload, webhook endpoints, and direct integrations with popular tools.
Every signal contains these core fields:
| Field | Required | Description |
|---|---|---|
| title | Yes | Short summary of the feedback (max 500 chars) |
| rawContent | Yes | Full feedback text (max 50,000 chars) |
| sourceType | Yes | Origin: csv_import, webhook, zendesk, intercom, gong, amplitude, manual, slack, email, app_review, survey, github, jira, linear |
| status | Auto | Processing state: PENDING → PROCESSING → PROCESSED / FAILED / DUPLICATE / ARCHIVED. Set automatically — do not send on creation. |
| category | Auto | Auto-classified: feature_request, bug_report, question, praise, complaint, churn_risk |
| customerName | No | Name of the customer who gave the feedback |
| customerEmail | No | Customer email — used for automatic customer matching |
| customerCompany | No | Company name |
| customerArr | No | Annual recurring revenue (USD) |
| sourceId | No | External system ID (e.g., Zendesk ticket ID) |
| sourceUrl | No | Link back to the original source |
| sourceMetadata | No | JSON object with source-specific fields (ticket ID, channel, tags, priority, timestamps, etc.) |
Navigate to Signals → Import to upload a CSV file of customer feedback. Clarion parses the file, maps columns to signal fields, and queues each row for AI processing.
Your CSV should have a header row. Clarion recognizes these column names (case-insensitive):
title,rawContent,customerName,customerEmail,customerCompany,customerArr
"Need dark mode","Our entire team works late and the bright UI is painful","Jane Smith","jane@acme.com","Acme Corp",120000
"API rate limiting","Getting 429s when syncing more than 100 records","Bob Lee","bob@widgets.io","Widgets Inc",45000rawContent within 24 hours are automatically skipped.Note
Create custom webhook endpoints to receive signals from any external system. Navigate to Settings → Webhooks to create a new webhook.
Create a webhook
Configure your source
X-Webhook-Secret header for HMAC verification.Send signals
{
"title": "Feature request from Typeform",
"rawContent": "I wish I could export reports as PDF...",
"sourceType": "webhook",
"customerName": "Alice Chen",
"customerEmail": "alice@example.com",
"sourceMetadata": {
"formId": "abc123",
"submittedAt": "2026-02-15T10:30:00Z"
}
}For security, Clarion signs every expected payload with your webhook secret using HMAC-SHA256. Include the secret in the X-Webhook-Secret header. Requests with missing or invalid signatures are rejected with a 401 status.
Clarion connects directly with your existing tools via OAuth. Navigate to Settings → Integrations to connect any of the supported services.
subject → signal title, description → rawContent. Priority, status, tags, and timestamps are stored in sourceMetadata.Every signal passes through a multi-stage AI pipeline that runs asynchronously in the background. See the User Guide for the full walkthrough with screenshots.
Each processed signal produces these fields on its linked insight record:
| Stage | Output Field | Details |
|---|---|---|
| Classification | category | One of: feature_request, bug_report, question, praise, complaint, churn_risk. Includes confidence score (0–1). |
| Theme Extraction | themes | 1–3 topic labels (e.g., "Dashboard Performance"). Named entities (products, competitors) also extracted. |
| Sentiment | sentimentScore | Float from -1.0 (very negative) to +1.0 (very positive). |
| Importance | importanceScore | Integer 1–10 based on urgency, customer ARR, request frequency, and business impact. |
| Embeddings | embedding | 1024-dimension vector. Powers semantic search, Knowledge Explorer, and opportunity clustering. |
Signals with classification confidence below 70% are flagged in a review queue for manual verification.
| Tier | Available On | Used For |
|---|---|---|
| Clarion AI | Starter + Essentials | Classification, theme extraction, sentiment analysis, summaries |
| Clarion AI Pro | Pro + Enterprise | PRD generation, What to Build recommendations, machine spec generation |
| Vector Embeddings | Essentials + Pro + Enterprise | Semantic search powered by advanced AI embeddings |
Note
Spec Studio generates dual-audience documents — human-readable PRDs and machine-verifiable specs for AI coding agents. See the User Guide for the full editor walkthrough.
After generating a machine spec, generate five agent artifacts optimized for AI coding assistants:
| Artifact | File | Purpose |
|---|---|---|
| Cursor Rules | .cursorrules | Project context, tech stack, coding conventions, and implementation guidance for Cursor AI |
| Machine Spec | SPEC.md | Machine-verifiable specification with numbered requirements, data models, API contracts, and acceptance tests |
| Agent Guide | agents.md | 5-agent team workflow (Architect, Backend, Frontend, Testing, Review) with phased implementation strategy |
| Task Breakdown | tasks.json | Structured task list with dependency ordering, priorities, effort estimates, and acceptance criteria |
| Test Scenarios | acceptance_tests.spec.ts | TypeScript test file — each requirement becomes one or more test cases with edge cases |
Export specs formatted for specific AI coding tools:
| Tool | Format | Optimized For |
|---|---|---|
| Cursor | .cursorrules | Project context with spec constraints and testing requirements |
| Claude Code | CLAUDE.md | Implementation guidance with architecture decisions |
| v0 | Prompt | Component-focused prompts for Vercel v0 |
| Bolt | Prompt | Full-stack prompts for StackBlitz Bolt |
| Lovable | Prompt | Feature-focused prompts for Lovable |
| Format | Use Case |
|---|---|
| Word (.docx) | Formatted PRD for stakeholder review |
| Print-ready specification document | |
| Markdown (.md) | SPEC.md for repository inclusion |
| ZIP | All agent artifacts bundled in a single download |
| Jira | Structured export compatible with Jira issue import |
| Linear | Formatted for Linear project import |
Push generated artifacts directly to a GitHub repository. Clarion creates a new branch, commits all artifact files, and opens a pull request. When the PR is merged, Clarion automatically detects the shipped feature and updates the linked opportunity status.
Specs are validated for completeness and consistency. The validator checks for missing acceptance criteria, undefined API contracts, inconsistent data models, and untested edge cases. Validation results are shown inline as gap indicators before artifact generation.
Agent Bridge connects Clarion directly to AI coding agents (Cursor, Claude Code, Codex, GitHub Copilot, Windsurf, Cline, JetBrains Junie) via the Model Context Protocol. Once wired up, your agent can ask Clarion what to build, trace decisions to customer evidence, and check approaches against existing decisions — without you copy-pasting specs.
The @clarion/cli package auto-detects your agent and writes the right skill files, rules-file snippets, and MCP config for you. All writes are idempotent — safe to re-run.
npx @clarion/cli@latest init
npx @clarion/cli@latest loginRestart your agent. For the full per-agent reference (file paths, manual setup, troubleshooting), see agent-setup.md.
Clarion's MCP server exposes nine tools today. Decision logging, document browsing, and full drift validation are coming in upcoming releases — tools that depend on them fall back gracefully until then.
| Tool | Returns |
|---|---|
| clarion_get_onboarding_context | Strategic workspace snapshot — call once per session |
| clarion_ask | AI recommendation grounded in real signals (advise/check/fast) |
| clarion_search | Universal semantic search across signals/opps/specs/competitors |
| query_opportunities | Prioritized opportunity list with RICE/ICE/MoSCoW |
| get_specification | Full PRD + machine spec by spec or opportunity UUID |
| find_evidence | Signal → insight → opportunity → spec → feature traceability |
| get_outcomes | Post-ship metrics (baseline / target / actual) |
| validate_opportunity | Validation campaign status + response stats |
| ping | Connectivity test |
MCP connections use OAuth 2.0 with PKCE — no API key copy-paste. The CLI handles the loopback flow for you. Tokens are scoped per workspace and refresh automatically (1-hour access tokens, 30-day refresh tokens).
Project-level .mcp.json (Cursor, Claude Code, Copilot, Windsurf, Cline, Junie):
{
"mcpServers": {
"clarion": {
"url": "https://app.getclarion.in/api/mcp"
}
}
}Codex uses a user-global TOML config:
[mcp_servers.clarion]
url = "https://app.getclarion.in/api/mcp"For headless CI/scripts where OAuth isn't practical, fall back to an API key — set CLARION_API_KEY=<key> as an env var. Generate one in Settings → API Keys.
MCP clients discover Clarion's OAuth endpoints from /.well-known/oauth-authorization-server (RFC 8414) and /.well-known/oauth-protected-resource (RFC 9728). Dynamic Client Registration (RFC 7591) at /api/mcp/oauth/register means clients get a stable client_id without you registering anything by hand.
Connecting MCP isn't enough — your agent needs to know when to call Clarion. The CLI writes a SKILL.mdwith explicit trigger rules (e.g. “Call clarion_get_onboarding_context once per session; call clarion_ask mode=check before strategic implementation choices”) plus anti-patterns and output norms (cite by entity id, attribute by company, never fabricate ARR numbers).
For Claude Code, the CLI also writes /clarion-setup, /clarion-welcome-back, /clarion-check <approach>, and /clarion-decide <decision> slash commands. Other agents recognize the same phrases as plain messages.
npx @clarion/cli@latest whoami # confirms CLI authentication
npx @clarion/cli@latest context # workspace snapshot
# Then in your agent:
> Call clarion_get_onboarding_context and tell me what you see.The Agent Bridge page (/agents) lists every host that's currently connected via OAuth or API key, with last-used timestamps and a revoke button per token.
Clarion provides a RESTful API for programmatic access. All API endpoints require authentication via API key or session token.
Generate API keys in Settings → API Keys. Include the key as a Bearer token in the Authorization header:
curl -H "Authorization: Bearer cl_your_api_key" \
https://getclarion.in/api/v1/signalsWarning
Signals
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/signals | List signals with filters and pagination |
| POST | /api/v1/signals | Create a new signal |
| GET | /api/v1/signals/:id | Get signal details with insight and customer data |
| DELETE | /api/v1/signals/:id | Soft-delete a signal |
| PATCH | /api/v1/signals/bulk-update | Bulk update status/category on up to 200 signals |
| POST | /api/v1/signals/import | Import signals from CSV file upload |
Insights & Opportunities
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/insights | List insights with aggregations and filters |
| GET | /api/v1/insights/themes | List extracted themes with signal counts |
| GET | /api/v1/insights/trends | Get trend data over time |
| GET | /api/v1/opportunities | List opportunities with framework scores |
| POST | /api/v1/opportunities | Create an opportunity |
| GET | /api/v1/opportunities/:id | Get opportunity details with linked insights |
| PATCH | /api/v1/opportunities/:id | Update opportunity fields |
| DELETE | /api/v1/opportunities/:id | Delete an opportunity |
Specifications
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/specifications | List specifications with status |
| POST | /api/v1/specifications | Create a specification (standalone or from opportunity) |
| GET | /api/v1/specifications/:id | Get full spec with PRD and machine spec |
| PATCH | /api/v1/specifications/:id | Update spec content |
| DELETE | /api/v1/specifications/:id | Delete a specification |
| POST | /api/v1/specifications/:id/generate-machine-spec | Start machine spec generation |
| POST | /api/v1/specifications/:id/generate-artifacts | Generate agent artifacts |
| GET | /api/v1/specifications/:id/artifacts/download | Download artifacts as ZIP |
| POST | /api/v1/specifications/:id/push-to-github | Push artifacts to GitHub as a PR |
Webhooks
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/webhooks | List webhook endpoints |
| POST | /api/v1/webhooks | Create a webhook endpoint |
| DELETE | /api/v1/webhooks/:id | Delete a webhook endpoint |
| POST | /api/v1/webhooks/:id/ingest | Send signal data to a webhook |
| POST | /api/v1/webhooks/:id/test | Send a test payload |
Search & Knowledge
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/search | Semantic search across signals, insights, and specs |
| POST | /api/v1/knowledge/chat | Start or continue a Knowledge Explorer conversation |
| GET | /api/v1/customers/:id | Get customer details with signal history |
All successful responses return a JSON object with a data key. List endpoints include pagination metadata:
{
"data": [
{
"id": "01960a3b-...",
"title": "Need bulk export option",
"rawContent": "Our team needs to export reports as PDF...",
"sourceType": "zendesk",
"status": "PROCESSED",
"category": "feature_request",
"customer": {
"id": "01960a3a-...",
"name": "Jane Smith",
"company": "Acme Corp"
},
"createdAt": "2026-02-15T10:30:00Z"
}
],
"nextCursor": "01960a3b-...",
"total": 142
}List endpoints use cursor-based pagination. Pass cursor (the ID of the last item) and limit (default 20, max 100) as query parameters. The response includes a nextCursor field for the next page.
API requests are rate-limited per API key. Limits depend on your plan (see User Guide for full plan details):
| Plan | Rate Limit |
|---|---|
| Starter (Free) | 60 requests / minute |
| Essentials | 200 requests / minute |
| Pro | 300 requests / minute |
| Enterprise | Custom (contact sales) |
Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in every response.
All errors follow a consistent JSON format:
{
"error": "Human-readable error message",
"code": "MACHINE_READABLE_CODE"
}| Code | HTTP Status | Description |
|---|---|---|
| UNAUTHORIZED | 401 | Missing or invalid authentication |
| FORBIDDEN | 403 | Insufficient permissions for this action |
| NOT_FOUND | 404 | Resource does not exist |
| VALIDATION_ERROR | 400 | Invalid request body or parameters |
| RATE_LIMITED | 429 | Too many requests |
| INTERNAL_ERROR | 500 | Unexpected server error |
Clarion implements defense-in-depth security across every layer. See our Privacy Policy for the full data handling details.
All data is strictly isolated by organization. Every request is scoped to your organization. There is no way to access another organization’s data through any API endpoint or UI interaction.
Clarion uses role-based access control (RBAC) to manage permissions within your organization.
| Role | Permissions |
|---|---|
| Owner | Full access. Manage billing, delete org, transfer ownership. One per org. |
| Admin | Manage team, settings, integrations, workflows, and all content. Cannot manage billing or delete org. |
| Member | Create and edit signals, insights, opportunities, and specs. Cannot manage team or settings. |
| Viewer | Read-only access to all data. Cannot create, edit, or delete anything. |
Invite team members from Settings → Team. Each invitation specifies a role. For Pro plans, you can optionally assign a Pro seat to the invited member (giving them access to Pro features). Invitations are delivered via email and expire after 7 days.
You can also create shareable invite links for bulk onboarding. Invite links can be configured with a maximum number of uses and an expiration date.
Users can belong to multiple organizations. Switch between orgs from the sidebar dropdown menu. Each org has its own data, settings, and billing — completely isolated.