Intake-Triage
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
README
Intake Triage & Classification API
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.
Quick Start
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, james@example.com",
"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": "james@example.com",
"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"
}
Setup
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
API Endpoints
| 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 |
Input Schema
| 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) |
Output Schema
| 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 |
Authentication
Pass your API key in the X-API-Key header with every request.
To get an API key, email api@yourdomain.com with your use case.
Rate Limits
60 requests per minute per API key. Exceeding this returns 429.
Using as an MCP Server (Claude Desktop)
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.
Using in n8n
- Add an HTTP Request node
- Set method to POST
- URL:
https://your-domain.com/triage - Headers:
X-API-Key: your_key,Content-Type: application/json - Body (JSON):
{ "text": "{{ $json.message }}" } - The response JSON is directly usable in downstream nodes for routing
Using in Make / Zapier
Use the HTTP module with the same POST configuration as above. The guaranteed JSON schema means you can map output fields directly without parsing.
Pricing
| Plan | Price | Calls/month |
|---|---|---|
| Free | $0 | 500 |
| Starter | $19/mo | 10,000 |
| Agency | $99/mo | 100,000 |
Marketplace Listings
- RapidAPI: https://rapidapi.com/your-listing (coming soon)
- Smithery: https://smithery.ai/your-listing (coming soon)
Deployment
Docker
docker build -t intake-triage-api .
docker run -p 8000:8000 -p 8001:8001 --env-file .env intake-triage-api
Fly.io
fly launch
fly secrets set OPENAI_API_KEY=sk-... ADMIN_KEY=...
fly deploy
Running Tests
pytest tests/ -v
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.