Public leaderboard

Public assessment

Whatsonyourmind/oraclaw (@oraclaw/mcp-server)

oraclaw-mcp-server · v1.4.2 · scanned

What changed in the harness

Selection accuracy 98→98, token cost up 2%, unconfirmed writes 100%→100%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

30.0 / 30

30.0 out of 30
02Legibility

25.3 / 30

25.3 out of 30
03Economics

12.5 / 20

12.5 out of 20
04Discoverability

19.2 / 20

19.2 out of 20

Highest-impact fix

Estimated gain +7 points

Reduce the tool-definition and task token payload

Consolidate overlapping tools and trim repetitive schema text while preserving behavior, parameter, and return semantics.

Description evidence

Defects and rewrites.

6 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
optimize_contextual
params_unexplained
Select the best option from 2+ candidate arms (each with an id and name) given a numeric context/feature vector, using a LinUCB contextual bandit that learns per-context preferences from optional history. Use when the best choice changes with situational features that vary call-to-call (user/segment attributes, time of day, current regime). Returns the chosen arm with its LinUCB expected reward and confidence width. If you have no per-call features, use optimize_bandit.
solve_constraints
params_unexplained
[Premium] Solve a linear / mixed-integer / quadratic program with the HiGHS solver and return a provably optimal assignment. Specify direction ('maximize' or 'minimize'), an objective mapping variable names to coefficients, a list of variables (each with a name, optional lower/upper bounds, and type: continuous/integer/binary), and a list of constraints (each with a name, its per-variable coefficients, and lower/upper bounds). Use when your objective and constraints are linear (or quadratic) over named continuous/integer/binary variables: budget allocation, supply or capacity planning with integer counts, allocation with hard caps. Returns solver status (optimal/infeasible/unbounded), the objective value, and the solved value per variable. Use optimize_cmaes for black-box objectives and solve_schedule for task-to-slot assignment. Premium: needs an ORACLAW_API_KEY OR a per-call x402 payment (no signup).
solve_schedule
params_unexplained
Assign a list of tasks (each with id, name, durationMinutes, priority, energyRequired, and optional deadline/category) to a list of time slots (each with id, startTime, durationMinutes, and energyLevel) to maximize total score by matching each task's energy requirement to a slot's energy level and respecting duration. Use for deep-work blocking, shift or session planning, or any task-to-slot fit where high-energy work should land in high-energy slots. Returns the assignments, any unassigned task IDs, and a total score. For arbitrary linear constraints use solve_constraints; for routing use plan_pathfind.
analyze_graph
params_unexplained
[Premium] Compute structural metrics of a directed weighted graph built from nodes (each with an id and optional type/label/confidence) and edges (each with a source id, target id, and optional type/weight): PageRank centrality, Louvain community clusters, an optional critical path between two given nodes (sourceGoal/targetGoal), and bottleneck nodes. Use to find the most influential nodes, cluster a dependency/knowledge graph, or locate chokepoints in supply or process networks. Returns per-node PageRank and community index, cluster summaries, the critical path with its weight, and bottlenecks. For a single source-to-goal route, use plan_pathfind (free). Premium: needs an ORACLAW_API_KEY OR a per-call x402 payment (no signup).
plan_pathfind
params_unexplained
Find the shortest path (or k-shortest paths) between a start and end node in a weighted directed graph, given nodes (each with an id and optional cost/time/risk used by the heuristics) and edges (each with from/to node ids and optional cost/time/risk weights), using A* with selectable heuristic (zero=Dijkstra, time, cost, risk, weighted) and Yen's algorithm for alternatives. Use for routing, dependency resolution, or 'how do I get from X to Y' over a graph; set kPaths>1 for alternatives. Returns the path node IDs, total cost, a time/cost/risk breakdown, nodes explored, and a found flag. For centrality/communities use analyze_graph; for task-to-slot assignment use solve_schedule.
optimize_evolve
params_unexplained
Run a genetic algorithm over a fixed-length gene vector against a weighted-sum fitness, with an optional Pareto frontier for multi-objective runs. bounds sets the per-gene lower/upper limits and encoding type (binary, integer, real, or permutation). Use for discrete or mixed search spaces (feature selection, integer allocation, permutation/TSP-style problems) or when you want several non-dominated solutions. Returns the best chromosome and fitness, the Pareto frontier when applicable, the convergence generation, total generations, and recent fitness history; results vary run to run (stochastic). For smooth continuous objectives, use optimize_cmaes.

Selection evidence

Confusable tool pairs.

13 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
optimize_bandit optimize_contextual high Both pick a best arm from a candidate list and return similar outputs; if the task mentions any per-call features (user segment, time of day) alongside historical pulls, an agent could easily default to optimize_bandit instead of optimize_contextual, or vice versa if history is present but no explicit context vector is described.
optimize_cmaes optimize_evolve high Both take a dimension/geneLength, a weighted-sum objective, and are explicitly cross-referenced as alternatives for continuous vs discrete search; a task like 'tune these N parameters to maximize a weighted score' without stating continuous vs discrete/integer nature is genuinely ambiguous between them.
predict_bayesian predict_ensemble medium Both fuse multiple numeric/probability inputs into one consensus value; a task like 'combine these signals/estimates into a single probability' could be routed to either the Beta-posterior updater or the weighted-model ensemble depending on whether the agent notices one is prior+evidence and the other is N model predictions.
simulate_montecarlo simulate_scenario medium Both are described as 'simulate' tools for exploring uncertainty in numeric outcomes; a task like 'simulate different budget outcomes' is ambiguous between sampling a parametric distribution (montecarlo) and comparing named what-if variable overrides (scenario) if the task doesn't specify whether inputs are randomly distributed or discrete named cases.
score_convergence score_calibration medium Both score sets of probabilities and are explicitly cross-referenced; a task like 'score how good these probability predictions are' is ambiguous between measuring agreement across independent sources (convergence) versus accuracy against realized binary outcomes (calibration) unless outcomes vs multiple sources are clearly distinguished.
solve_constraints solve_schedule medium A task like 'assign my tasks to time slots to maximize value' fits solve_schedule's purpose-built energy/duration matching but could also plausibly be modeled as a linear/MIP assignment via solve_constraints, especially if the agent doesn't register the specialized energy-matching semantics of solve_schedule.
optimize_bandit optimize_cmaes low Bandit selects among discrete labeled arms from pull/reward history while cmaes tunes continuous parameter vectors; the required inputs (arms+pulls vs dimension+weights) are different enough that confusion is unlikely except in vague 'optimize my options' phrasing.
optimize_bandit optimize_evolve low Bandit chooses from a small set of pre-defined arms with trial history, while evolve searches a fixed-length gene vector via GA; the shapes of inputs are distinct enough that a natural task rarely maps ambiguously to both.
optimize_contextual optimize_cmaes low Contextual bandit arm-selection and continuous CMA-ES parameter tuning solve different problem shapes (discrete arms with context vs continuous parameter vectors), making genuine confusion unlikely.
optimize_contextual optimize_evolve low Contextual bandit selection among labeled arms and genetic-algorithm search over gene vectors serve different task shapes, so overlap in a natural-language request is unlikely beyond the shared word 'optimize'.
predict_forecast predict_bayesian low Forecast projects future values of an evenly-spaced time series while bayesian updates a prior with weighted evidence; the input shapes (time series vs prior+evidence list) are distinct enough to rarely cause real selection confusion.
predict_forecast predict_ensemble low Forecast extrapolates a single series forward in time, whereas ensemble fuses multiple models' point predictions for the same target; these serve different enough purposes that confusion is unlikely despite both being 'predict' tools.
analyze_graph analyze_risk low Graph analysis (PageRank/clustering/critical path) and portfolio VaR/CVaR risk analysis operate on entirely different data structures and domains, so despite shared 'analyze'/'premium' tokens a natural task is unlikely to be ambiguous between them.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard