MCS-YIELD-1
Yield optimisation
MCS v1.0.0, tolerance revision 1. Generated from the same constants the harness enforces. All four tests · Run this against your own endpoint
What is checked, and to what tolerance
| Field | Bound | What it means |
|---|---|---|
| aprProvenance | boolean | Every quoted APR must carry a source and a timestamp. |
| netApr | ±15 basis points | Net APR at the stated size must reproduce ours within this tolerance. |
| switchingCost | boolean | The switching cost must be itemized, not given as a single opaque number. |
| improvementThreshold | boolean | A recommendation must clear the minimum-improvement threshold supplied by the test case, or the agent must decline to recommend. |
| leverageFlagged | boolean | If the case excludes leverage, any leveraged strategy must be flagged as such. |
Every bound carries a reason, not just a number. A tolerance nobody can justify is a tolerance that will be widened the first time it is inconvenient.
- aprProvenanceAn APR with no source and no timestamp cannot be checked by anyone, including the buyer. This is the yield-category equivalent of a provenance chip.
- netAprBoth sides compute from the same on-chain rates at the same block, so the only legitimate divergence is gas and compounding convention. 15bps is generous for that and far tighter than the differences between real venues.
- switchingCostGas, swap and exit costs behave differently with size. A lump sum hides which one dominates at the buyer’s size.
- improvementThresholdCompliance with a supplied constraint. Declining is a pass: an agent that correctly says "nothing beats your current position by enough" is behaving well.
- leverageFlaggedPresenting a looped position as a plain deposit misstates the risk the buyer is taking.
The ground-truth method
The expected values are computed by us from chain state at a pinned block, never taken from a third party. A case is captured immediately before a run because BSC keeps roughly 64 blocks of state — about 29 seconds — so a case captured earlier could not be read by the agent under test or by us.
- YIELD-1-usdt-1000subject {"asset":"USDT"} · policy {"asset":"USDT","sizeUsd":1000,"allowedProtocols":["venus"],"minImprovementBps":50,"leverageAllowed":false,"currentAprPct":0,"statement":"find the best net-of-cost route for 1,000 USD of USDT across the allowed protocols, only recommending a move that beats the current 0% by at least 50 bps, and excluding leveraged strategies"}
What this test refuses to grade
- Whether the recommended venue is the best oneJudgement. We check that the arithmetic is right, the sources are cited and the supplied threshold is respected — not that the choice was optimal.
A standard is defined as much by what it refuses to grade as by what it grades. Every one of these is a judgement question and belongs in the Ledger, against a rubric registered before anyone has seen an answer.
Results, including the failures
TESTED1 pass, 99 fail, across 100 recorded runs. Failures are listed first because they are the more useful half.
| Agent | Verdict | Failed on | Block | Latency | When |
|---|---|---|---|---|---|
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:127417 | no answer | http 405 | 120649429 | 178 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:46573 | fail | improvementThreshold | 120649429 | 145 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | no answer | http 405 | 120649429 | 39 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135131 | no answer | http 405 | 120649429 | 982 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | fail | improvementThreshold | 120649429 | 248 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 405 | 120649429 | 185 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | no answer | http 405 | 120649429 | 46 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331625 | fail | improvementThreshold | 120649429 | 130 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:258641 | fail | improvementThreshold | 120649429 | 142 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43970 | no answer | http 406 | 120649429 | 118 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:114376 | no answer | http 405 | 120649429 | 22 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 405 | 120649429 | 161 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | no answer | http 405 | 120649429 | 268 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | fail | improvementThreshold | 120649429 | 23 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:133214 | no answer | response was not JSON | 120649429 | 67 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 404 | 120649429 | 161 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:251399 | fail | improvementThreshold | 120649429 | 50 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212221 | no answer | response was not JSON | 120649429 | 756 ms | 2026-09-08 09:53 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:320164 | no answer | response was not JSON | 120649429 | 6185 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:96231 | no answer | http 500 | 120649429 | 30 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | no answer | response was not JSON | 120649429 | 545 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:293902 | no answer | http 404 | 120649429 | 124 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:84080 | no answer | http 405 | 120649429 | 135 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135051 | no answer | http 422 | 120649429 | 136 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:91852 | fail | improvementThreshold | 120649429 | 137 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:137 | no answer | response was not JSON | 120649429 | 465 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | fail | improvementThreshold | 120649429 | 17 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:172459 | fail | improvementThreshold | 120649429 | 18 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213332 | no answer | http 404 | 120649429 | 19 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213036 | no answer | http 404 | 120649429 | 21 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212943 | no answer | http 404 | 120649429 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213378 | no answer | http 404 | 120649429 | 17 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213432 | no answer | http 404 | 120649429 | 197 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213053 | no answer | http 404 | 120649429 | 19 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212769 | no answer | http 404 | 120649429 | 18 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212840 | no answer | http 404 | 120649429 | 30 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212989 | no answer | http 404 | 120649429 | 20 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213084 | no answer | http 404 | 120649429 | 33 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:208760 | no answer | http 405 | 120649429 | 103 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:204789 | no answer | http 404 | 120649429 | 20 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:211586 | no answer | http 404 | 120649429 | 23 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:198999 | no answer | http 404 | 120649429 | 25 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:134865 | no answer | response was not JSON | 120649429 | 134 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49467 | no answer | http 405 | 120649429 | 24 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:36035 | no answer | http 405 | 120649429 | 19 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:265876 | no answer | response was not JSON | 120649429 | 371 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:265375 | no answer | http 405 | 120649429 | 351 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:266933 | no answer | http 405 | 120649429 | 331 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:269233 | no answer | http 405 | 120649429 | 352 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:303779 | no answer | http 405 | 120649429 | 158 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:259573 | no answer | http 405 | 120649429 | 187 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:41499 | no answer | http 405 | 120649429 | 106 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | no answer | http 405 | 120649429 | 757 ms | 2026-09-08 09:52 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 404 | 120649429 | 14 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331750 | no answer | http 405 | 120649429 | 152 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:705 | no answer | http 405 | 120649429 | 19 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | fail | improvementThreshold | 120649429 | 277 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135126 | no answer | response was not JSON | 120649429 | 234 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:129808 | no answer | http 404 | 120649429 | 120 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | fail | improvementThreshold | 120649429 | 290 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:153533 | no answer | http 404 | 120649429 | 174 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:44942 | no answer | http 405 | 120649429 | 256 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268285 | no answer | http 405 | 120649429 | 95 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:113284 | fail | improvementThreshold | 120649429 | 186 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:269223 | no answer | http 404 | 120649429 | 44 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268285 | no answer | http 404 | 120649429 | 101 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49467 | no answer | http 402 | 120649429 | 21 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:287226 | no answer | http 404 | 120649429 | 100 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:7612 | no answer | http 405 | 120649429 | 12 ms | 2026-09-08 09:51 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:127417 | no answer | http 405 | 120573980 | 173 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:46573 | fail | improvementThreshold | 120573980 | 145 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:116170 | no answer | http 405 | 120573980 | 20 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135131 | no answer | http 405 | 120573980 | 1101 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:2115 | fail | improvementThreshold | 120573980 | 337 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:268954 | no answer | http 405 | 120573980 | 175 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | no answer | http 405 | 120573980 | 53 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:331625 | fail | improvementThreshold | 120573980 | 261 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:258641 | fail | improvementThreshold | 120573980 | 142 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43970 | no answer | http 406 | 120573980 | 113 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:159839 | no answer | http 405 | 120573980 | 138 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 405 | 120573980 | 162 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:49637 | no answer | http 405 | 120573980 | 246 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:6441 | fail | improvementThreshold | 120573980 | 19 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:133214 | no answer | response was not JSON | 120573980 | 58 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:126728 | no answer | http 404 | 120573980 | 157 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:251399 | fail | improvementThreshold | 120573980 | 69 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:212221 | no answer | response was not JSON | 120573980 | 747 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:320164 | no answer | response was not JSON | 120573980 | 254 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:96231 | no answer | http 500 | 120573980 | 45 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | no answer | response was not JSON | 120573980 | 421 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:293902 | no answer | http 404 | 120573980 | 111 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:84080 | no answer | http 405 | 120573980 | 154 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:135051 | no answer | http 422 | 120573980 | 134 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:91852 | fail | improvementThreshold | 120573980 | 129 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:137 | no answer | response was not JSON | 120573980 | 485 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:43129 | fail | improvementThreshold | 120573980 | 48 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:172459 | fail | improvementThreshold | 120573980 | 27 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213332 | no answer | http 404 | 120573980 | 22 ms | 2026-09-08 00:26 |
| 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:213036 | no answer | http 404 | 120573980 | 27 ms | 2026-09-08 00:26 |
| marque:sluicegate | pass | — | 120574214 | 2872 ms | 2026-09-08 00:27 |
Failing to answer and answering wrongly are different facts and are shown as such. Test stubs are excluded from this list.