loading…
Search for a command to run...
loading…
Classify raw text into structured triage objects with intent, urgency, category, and sentiment. Zero-config MCP tool for support intake, lead routing, and ticke
Classify raw text into structured triage objects with intent, urgency, category, and sentiment. Zero-config MCP tool for support intake, lead routing, and ticket automation
A pay-per-call API that accepts raw unstructured text (emails, support tickets, Slack messages, voicemail transcripts) and returns a guaranteed-schema JSON triage object with intent, urgency, sentiment, entities, and routing.
curl -X POST https://your-domain.com/triage \
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_abc123" \
-d '{
"text": "Hi, I placed an order three days ago (order #8821) and still haven't received a shipping confirmation. This is really frustrating. Can someone help? - James, [email protected]",
"context": "ecommerce_support"
}'
Response:
{
"schema_version": "v1",
"intent": "order_status_inquiry",
"urgency": "medium",
"sentiment": "frustrated",
"entities": {
"order_id": "8821",
"issue": "missing shipping confirmation",
"contact_name": "James",
"contact_email": "[email protected]",
"product": null,
"company": null,
"phone": null,
"date_mentioned": null
},
"suggested_routing": "order_fulfillment",
"summary": "Customer James reporting no shipping confirmation received 3 days after placing order #8821.",
"tags": ["order", "shipping", "delay"],
"confidence": 0.96,
"processing_time_ms": 312,
"model_used": "gpt-4o-mini"
}
git clone <repo-url> && cd intake-triage-api
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # fill in your keys
python main.py
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /triage |
API Key | Classify text and return triage JSON |
| GET | /health |
None | Health check |
| GET | /schema |
None | Full JSON Schema of the output model |
| GET | /usage |
API Key | Current usage stats for your key |
| POST | /keys/provision |
Admin Key | Create a new API key |
| GET | /docs |
None | Swagger UI |
| Field | Type | Required | Description |
|---|---|---|---|
text |
string | Yes | Raw unstructured text to classify |
context |
string | No | Business context hint (e.g. ecommerce_support) |
schema_version |
string | No | "v1" (default) |
| Field | Type | Description |
|---|---|---|
schema_version |
"v1" |
Response schema version |
intent |
enum | support_request, sales_inquiry, billing_question, complaint, feature_request, general_question, spam, appointment_request, refund_request, order_status_inquiry, technical_issue, unclear |
urgency |
enum | critical, high, medium, low |
sentiment |
enum | positive, neutral, frustrated, angry, confused, urgent |
entities |
object | Extracted entities: order_id, issue, contact_name, contact_email, product, company, phone, date_mentioned (all nullable) |
suggested_routing |
enum | support_team, sales_team, billing_team, technical_team, management, order_fulfillment, unroutable |
summary |
string | One-sentence summary |
tags |
string[] | Lowercase keyword tags |
confidence |
float | 0.0–1.0 confidence score |
processing_time_ms |
int | Processing time in ms |
model_used |
string | LLM model used |
Pass your API key in the X-API-Key header with every request.
To get an API key, email [email protected] with your use case.
60 requests per minute per API key. Exceeding this returns 429.
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"intake-triage": {
"url": "http://localhost:8001/sse"
}
}
}
The MCP server exposes one tool: triage_text(text, context?) which returns the full triage JSON object.
https://your-domain.com/triageX-API-Key: your_key, Content-Type: application/json{ "text": "{{ $json.message }}" }Use the HTTP module with the same POST configuration as above. The guaranteed JSON schema means you can map output fields directly without parsing.
| Plan | Price | Calls/month |
|---|---|---|
| Free | $0 | 500 |
| Starter | $19/mo | 10,000 |
| Agency | $99/mo | 100,000 |
docker build -t intake-triage-api .
docker run -p 8000:8000 -p 8001:8001 --env-file .env intake-triage-api
fly launch
fly secrets set OPENAI_API_KEY=sk-... ADMIN_KEY=...
fly deploy
pytest tests/ -v
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"intake-triage": {
"command": "npx",
"args": []
}
}
}PRs, issues, code search, CI status
Database, auth and storage
Reference / test server with prompts, resources, and tools.
Secure file operations with configurable access controls.