Skip to content

0.31.6 — a dead skill, a phantom endpoint, and a live price gate

Choose a tag to compare

@VickyXAI VickyXAI released this 16 Jul 01:15
2985b23

Two of these were live the whole time and invisible to every prior audit round: a skill that never loaded and an endpoint that never existed. Both were found by asking the gateway instead of re-reading our own files.

prediction-markets has never once loaded

Its description read ...you CANNOT get from a public API: historical price.... A plain YAML scalar may not contain ": ", so the frontmatter failed to parse, the loader got no name, and the skill was never registered. It built, it published, the prose read perfectly — the only symptom was that Claude never used a capability we shipped.

blockrun_surf advertised an endpoint that does not exist

chat/completions ("Surf-1.5 chat with citations", $0.02 flat) returns 404 Unknown Surf endpoint — the gateway replies with its own catalog of 83. That phantom was the off-by-one: surf.ts claimed 84 where the skill and the gateway both say 83.

Correctness

  • withTxFee rounded where the gateway ceils. usdToMicroUsdc is an unconditional Math.ceil; rounding goes one micro short wherever the ×1.05 margin drifts in float. modal's CPU hour charges 102001 micro, not 102000 — .toFixed(4) had been hiding it.
  • A prototype key killed every budget cap. modal's GPU tables were object literals, so TABLE["toString"] returned a function, reaching the gate as NaNcost > 0 is false (call allowed) and spent += NaN sticks for the life of the process. A $1-capped agent was cleared for a $500 call. Now Maps, and budget.ts fails closed on any non-finite estimate.

Prices — all understating, all corrected against live quotes

claimed charged
image-prompting nano-banana ~$0.01 $0.0545 (5.45×)
image-prompting gpt-image-2 poster ~$0.04 $0.128 (3.2×)
surf worked example $0.001 $0.0095 (9.5×)
modal A100 example no price, "auto-evicts when idle" $1.3413, upfront, never refunded
rpc $0.002 $0.0040
exa $0.01 $0.0120
search max_results:20 $0.50 $0.527

Plus crypto-data, which documented blockrun_rpc({ chain: ... }) when the param is network — the call as written could not have run.

New: npm run verify:prices

Probes all 20 paid routes and compares each live 402 quote to what the estimator reserves. Under-reserving exits non-zero; over-reserving warns. Free to run (no payment attached). This drift is invisible to CI by construction — the gateway reprices without an MCP release — and had already shipped three times.

0 under-reserving, 0 over-reserving, 0 unreachable, 20 exact

169 tests, typecheck, build green.