The loop is deliberate: define the type with its rules and thresholds, feed it labelled examples of your own or generated ones, train, then call. Escalation to a live LLM is something you opt into on the decision type rather than something that happens by default, which is what keeps the cost and latency of a single decision predictable. Two constraints to plan around: training wants at least 38 labelled examples per option, so a type with several options needs a real example set before it is worth starting, and 5,000 examples is the ceiling per type with an over-limit batch rejected whole rather than partly applied. The Claude Desktop gap is worth knowing before you choose a client.
An MCP server for Sparkient's decision intelligence API. You define a decision type with its rules and thresholds, add or generate labelled examples, train a model, then call it — with the decision logs, organisation metrics and credit balance reachable from the same place. Compiled cloud decisions target an under-100ms model path, though what you measure end to end also includes your client and the network.
- make_decision runs one metered, logged decision; the API sets both escalate and fallback_used, so read stage to tell an escalation from a fallback
- batch_decisions takes up to 50 ordered decisions, returning failed positions as null with an indexed error — those positions must not be acted on
- create_decision_type creates a classifier-only type by default, with structured CEL rules, an optional input schema, confidence thresholds and explicit opt-in to live-LLM escalation; list_decision_types and get_decision_type read them back with the active configuration version and deployment status
- add_examples adds labelled records, and generate_examples produces synthetic ones through Gemini
- train_model starts async training once there are at least 38 labelled examples per option, get_training_status polls stage progress, and cancel_training cancels exactly the active policy attempt
- get_decision_logs queries past decisions, get_metrics returns organisation aggregates for the last 24 hours including compiled and escalation rates, and get_credits reports balance, plan and the API's reset timestamp
- get_edge_export_instructions returns the authenticated REST URL and dashboard path for an eligible Growth or Scale edge bundle — the ZIP itself never travels through MCP
- Two resources cover discovery: sparkient://decision-types for the list, and sparkient://decision-types/{decision_type_id} for one type's full schema
- Each decision type stores up to 5,000 examples; an add_examples batch that would exceed that fails outright rather than partially, and near the ceiling generate_examples creates only the number that still fits
The cloud server is https://mcp.sparkient.ai/mcp with Authorization: Bearer and an API key from the Sparkient dashboard. Claude Desktop cannot reach it — its remote connectors expect authless or OAuth servers while this one takes a key in the header — so use Cursor, VS Code, or run the local proxy. Locally: pip install -e ".[dev]" then python -m sparkient_mcp with SPARKIENT_API_URL set to https://api.sparkient.ai, keeping the key in the MCP client and sending it as a bearer header on each request rather than putting it in the server process.
One command plus a key — npx -y @smithery/cli install sparkient --client claude, then supply credentials
