Ask an AI agent to pick between three vendors, or a database, or a job offer, and it will happily give you an answer. Ask it to weigh five options against six weighted criteria and it quietly falls apart: inconsistent weights, arithmetic that drifts, and no way to see how it got there. "Decision-making" is exactly the kind of multi-step scoring LLMs are bad at — and exactly the kind of thing you don't want a black box for.
So I built DecisionMatrix MCP — a deterministic Model Context Protocol server that turns "which option is best?" into a transparent, reproducible calculation. You give it options and weighted criteria plus a score matrix; it returns a scored, ranked, and explained result: the winner, the full ranking, per-criterion breakdowns, the method used, the weights applied, and a plain-language explanation. Every number runs through decimal.js (never floats), so identical inputs always produce identical output.
It's live, free to start, and takes ~30 seconds to add.
Add it to your agent
Remote server over Streamable HTTP — no install:
https://decisionmatrix-mcp.pages.dev/mcp
Generic client (Cursor, etc.):
{
"mcpServers": {
"decisionmatrix": {
"url": "https://decisionmatrix-mcp.pages.dev/mcp"
}
}
}
Claude Desktop (via the mcp-remote bridge):
{
"mcpServers": {
"decisionmatrix": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://decisionmatrix-mcp.pages.dev/mcp"]
}
}
}
Listed in the official MCP Registry as io.github.inity13/decisionmatrix-mcp.
What it does
Six tools:
- create_decision — the main one: rank options against weighted criteria, return the winner + full ranking + per-criterion breakdown + explanation
- score_options — the normalized scored matrix and ranking, without the narrative
- sensitivity_analysis — how robust is the winner? Sweeps each criterion's weight ±20% and tells you which criteria could flip the result, and at what weight
- compare_two — head-to-head of two options with a per-criterion breakdown
- list_methods / health_check
Three scoring methods: weighted_sum, weighted_product, and TOPSIS (distance to the ideal/anti-ideal solution). Criteria can be benefit (higher is better) or cost (lower is better).
What a call looks like
// create_decision
{
"options": ["Postgres", "MongoDB", "DynamoDB"],
"criteria": [
{ "name": "cost", "weight": 3, "direction": "cost" },
{ "name": "scalability", "weight": 5 },
{ "name": "team_familiarity", "weight": 4 }
],
"scores": {
"Postgres": { "cost": 2, "scalability": 7, "team_familiarity": 9 },
"MongoDB": { "cost": 3, "scalability": 8, "team_familiarity": 6 },
"DynamoDB": { "cost": 5, "scalability": 9, "team_familiarity": 4 }
}
}
You get back the winner, a ranked list with exact scores, a per-criterion breakdown showing where each option gained or lost, the weights used, and a sentence explaining why. Change a weight and the result changes predictably — and you can prove it with sensitivity_analysis.
Why deterministic matters
The whole point of offloading a decision to a tool is trust. DecisionMatrix is stateless (no database, no sessions) and byte-for-byte reproducible. The hosted endpoint is a Cloudflare Pages Function; the same engine also runs as a local stdio server you can self-host with a one-line Docker build. MIT licensed.
Pricing
- Free — 15 calls/day, no key needed
- Starter — $12/mo — 5,000 calls/day
- Pro — $39/mo — 50,000 calls/day
When an agent hits the free limit, the tool returns a structured error with the checkout URL, so an autonomous agent can surface the paywall and the user is two clicks from a key. Prefer to self-host? It's open source with a Dockerfile — run it with unlimited calls and your own keys.
Links
- 🌐 Site + docs: https://decisionmatrix-mcp.pages.dev
- 💻 GitHub (MIT): https://github.com/inity13/decisionmatrix-mcp
- 📇
llms.txt: https://decisionmatrix-mcp.pages.dev/llms.txt
If your agents make choices — vendor selection, architecture, prioritization, hiring — give it a try. I'm considering adding AHP (with a consistency ratio) and Pareto/efficiency-frontier tools next; tell me what you'd want.
Top comments (0)