Skip to main content
Correl8 exposes a project-scoped MCP server over Streamable HTTP with one tool: post_observations.

Endpoint

https://api.correl8.ai/mcp/v1/project/{project_id}/
Project ID and MCP URL are in Settings → Details.

Authentication

Authorization: ApiKey c8.xxx
Create keys in Settings.

Tool: post_observations

Post one or more observations in a single call. Pass user_id, interaction_id, and user_sentiment once, then an observations array (minimum 1, maximum 50).

Parameters

user_id
string
required
Stable identifier for the end user (one per call).
interaction_id
string
required
Stable identifier for the conversation thread (one per call), e.g. conv_9f3a2b1c.
user_sentiment
string
required
Label for all items in the call: very negative, negative, neutral, positive, or very positive. See User sentiment.
observations
array
required
List of observation objects. Each item uses the fields below.
observations[].title
string
required
Short plain-text summary (one line).
observations[].description
string
required
Plain prose with context — what happened, why it mattered, and how to reproduce when relevant.

Response

Returns a list of created observations (same shape as REST results). On validation errors, the tool raises an error with details.
[
  {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "user_id": "user-42",
    "interaction_id": "conv_9f3a2b1c",
    "title": "Enter key did not submit message",
    "description": "The user pressed Enter in the chat composer expecting the message to send. The message stayed in the input field.",
    "user_sentiment": "negative",
    "processing_status": "pending",
    "observed_at": "2026-06-10T14:30:00Z",
    "created_at": "2026-06-10T14:30:00Z",
    "tags": []
  }
]

Server-side processing

After a successful call, tag matching and issue digest run asynchronously per observation. processing_status starts as pending. See Concepts for billing limits.

Custom integration (REST API)

Same batch shape at POST /v1/project/{project_id}/observations/ with top-level user_id, interaction_id, user_sentiment, and { "observations": [ … ] }. See Advanced ingestion.