io.github.inity13/decisionmatrix-mcp
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Deterministic multi-criteria decision analysis for AI agents — score, rank & explain options.
| Author | io.github.inity13 |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 147 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"decisionmatrix-mcp": {
"url": "https://decisionmatrix-mcp.pages.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
create_decisionRank named options against weighted criteria and return the winner, full ranking, per-criterion score breakdowns, methodology, the weights used, and a plain-language explanation. This is the main tool. Provide options, criteria [{name, weight, direction}], and a scores matrix. method defaults to weighted_sum (also: weighted_product, topsis). 100% deterministic.
Parameters:
options(required) — array — Named alternatives. Strings ["A","B"] or objects [{"name":"A","scores":{...}}].criteria(required) — array — Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.scores(required) — object — Score matrix. Object form: {"Option A": {"Criterion 1": 8, ...}, ...}. Array form: [{"option":"Option A","scores":{...}}]. Or inline scores on each option object.method— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
score_optionsScore options against criteria when the score matrix is supplied separately. Returns the full normalized scored matrix (per-option, per-criterion) plus a ranking, without the narrative winner explanation. Use create_decision if you want a winner + explanation.
Parameters:
options(required) — array — Named alternatives. Strings ["A","B"] or objects [{"name":"A","scores":{...}}].criteria(required) — array — Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.scores(required) — object — Score matrix. Object form: {"Option A": {"Criterion 1": 8, ...}, ...}. Array form: [{"option":"Option A","scores":{...}}]. Or inline scores on each option object.method— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sensitivity_analysisTest how robust the winner is to changes in criteria weights. Sweeps each criterion's weight +/- 'variation' (default 0.2 = 20%) over 'steps' (default 10) increments, recomputes the ranking, and reports a robustness score, which criteria are most likely to flip the result, and the flip points.
Parameters:
options(required) — array — Named alternatives. Strings ["A","B"] or objects [{"name":"A","scores":{...}}].criteria(required) — array — Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.scores(required) — object — Score matrix. Object form: {"Option A": {"Criterion 1": 8, ...}, ...}. Array form: [{"option":"Option A","scores":{...}}]. Or inline scores on each option object.steps— integer — Number of weight steps per criterion (2-100).method— stringvariation— number — Fractional weight sweep, 0<v<=1. 0.2 = +/-20%.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
compare_twoDirect head-to-head comparison of exactly two options. Returns the winner, the score margin, how many criteria each option wins, and a per-criterion breakdown of who each criterion favours. Pass option_a and option_b (names) or a 2-element options array, plus criteria and scores.
Parameters:
criteria(required) — array — Weighted criteria. Each: {name, weight (relative, >=0), direction: 'benefit' (higher better, default) | 'cost' (lower better)}.scores(required) — object — Score matrix. Object form: {"Option A": {"Criterion 1": 8, ...}, ...}. Array form: [{"option":"Option A","scores":{...}}]. Or inline scores on each option object.method— stringoptions— array — Named alternatives. Strings ["A","B"] or objects [{"name":"A","scores":{...}}].option_a— stringoption_b— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_methodsList the available scoring methods (weighted_sum, weighted_product, topsis) with descriptions, normalization details, score ranges, and when to use each. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
health_checkServer health, version, and capabilities. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.