From 55e391d4205c69bf3ee9e52e1f1b18c7e7219614 Mon Sep 17 00:00:00 2001 From: VickyXAI <115643921+VickyXAI@users.noreply.github.com> Date: Fri, 7 Aug 2026 21:51:02 -0500 Subject: [PATCH] docs(skills): say which tools do not exist on Solana, and where MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #97 established that the two gateways disagree and guarded the two affected tools in code, but the skills still described one catalog. An agent that ran blockrun_wallet action:"chain" chain:"solana" earlier in the session had no written way to know that two of the twenty tools stopped existing. Probed against both gateways 2026-08-07: - /v1/defillama/* is absent on sol.blockrun.ai — 404, which reads like a bad path, so the natural next move is to re-check the path rather than the chain. - /v1/modal/* is present but unconfigured there — 503 on all four sandbox actions. That reads like an outage, which invites retrying against a backend that was never going to answer. Both now say so where the tool is documented (crypto-data's defi section, the modal skill's opening) rather than only in the core skill, because that is where an agent is looking when it needs the answer. The core skill grows a short section on what action:"chain" actually changes — it repoints every paid call at a different deployment — with the coverage table and both llms.txt URLs, since each gateway's catalog quotes its own pricing convention. rules/wallet-and-payment.md carries the mechanics: why the budget gate reserves the Base figure on both chains (over-reserving on Solana is the safe direction) and that verify-prices fails the build if Solana ever becomes the dearer one. --- skills/blockrun/SKILL.md | 30 ++++++++++++++++----- skills/blockrun/rules/wallet-and-payment.md | 22 +++++++++++++++ skills/crypto-data/SKILL.md | 5 +++- skills/modal/SKILL.md | 7 +++++ 4 files changed, 57 insertions(+), 7 deletions(-) diff --git a/skills/blockrun/SKILL.md b/skills/blockrun/SKILL.md index 67bcf78..930d7c0 100644 --- a/skills/blockrun/SKILL.md +++ b/skills/blockrun/SKILL.md @@ -32,15 +32,33 @@ changed, because each one was a typed copy. Read prices from a live source inste |------|-------| | Per-token model pricing | `blockrun_models` | | What a call will actually cost | the `402` response — it carries the real amount | -| Full endpoint catalog with prices | | +| Full endpoint catalog with prices | (Base) · (Solana) | The tool descriptions in the MCP server carry current prices too; they are generated, not typed. -**Every price in these skills is the Base price.** Base and Solana are separate -gateways: Base adds a flat per-transaction fee, Solana currently adds none, so the same -call runs about $0.001 cheaper on Solana. `blockrun_defi` and `blockrun_modal` are not -served on Solana at all. Read the 402 on the chain you are actually on, and check -`blockrun_wallet action: "chain"` if a figure looks off by a tenth of a cent. +## The two chains are not the same gateway + +`blockrun.ai` and `sol.blockrun.ai` are separate deployments, and +`blockrun_wallet action: "chain"` switches between them mid-session. Two consequences, +both easy to miss because nothing announces the switch: + +**Prices differ.** Every figure in these skills is the **Base** price. Base adds a flat +per-transaction fee; Solana currently adds none, so the same call runs about $0.001 +cheaper there. Each gateway's own `llms.txt` quotes its own convention — read the one for +the chain you are on, or just read the 402. + +**Some tools do not exist on Solana at all.** Verified against both gateways +2026-08-07: + +| Tool | On Solana | What you get | +|---|---|---| +| `blockrun_defi` | ✗ not served | `404` — reads like a bad path, but the path is fine | +| `blockrun_modal` | ✗ not served | `503` on all four sandbox actions — reads like an outage | +| everything else | ✓ | ~$0.001 cheaper than the figure printed here | + +Both tools now refuse before the round trip and tell you to switch, so you should never +see the raw `404`/`503` through the MCP. If you are calling the HTTP API directly you +will, and neither status says "wrong chain" — check the chain first. The same applies to counts. Where a number has a canonical source it is wrapped in a `br:` HTML-comment marker in this file, regenerated from `brand-numbers.json` by diff --git a/skills/blockrun/rules/wallet-and-payment.md b/skills/blockrun/rules/wallet-and-payment.md index 6ae3b21..4cbb2eb 100644 --- a/skills/blockrun/rules/wallet-and-payment.md +++ b/skills/blockrun/rules/wallet-and-payment.md @@ -39,6 +39,28 @@ command to run on their own machine. Budgets are enforced, not advisory: an agent that exhausts its delegated allowance is hard stopped rather than allowed to overspend. +## What `action: "chain"` actually changes + +It repoints every paid call at a different deployment — `blockrun.ai` becomes +`sol.blockrun.ai` — and those two do not serve the same catalog at the same prices. +Verified against both, 2026-08-07: + +- **The per-transaction fee.** Base adds a flat fee to every non-zero price; Solana adds + nothing. Same route, same base price, ~$0.001 apart. Nothing in the response says which + convention you just paid under, so a figure that looks a tenth of a cent off is usually + the chain, not a reprice. +- **Coverage.** `/v1/defillama/*` is absent on Solana (`404`) and `/v1/modal/*` is present + but unconfigured (`503` on create, exec, status and terminate — eight probes, all four + actions plus the GPU tiers). `blockrun_defi` and `blockrun_modal` guard against this and + refuse with a message naming the chain; every other tool works on both. +- **Onramp.** Card funding is Base-only, so `action: "deposit"` degrades to address + QR + guidance on Solana. Fund a Solana wallet by transfer. + +The budget gate reserves the **Base** figure on both chains. That over-reserves on Solana, +which is the safe direction — it can refuse an affordable call, but it can never let one +past the cap. `scripts/verify-prices.ts` probes both gateways and fails the build if +Solana ever becomes the dearer one, because then the same reserve would be short. + ## Funding 1. **Card / bank.** Through the MCP this is `blockrun_wallet action: "deposit"` — do not diff --git a/skills/crypto-data/SKILL.md b/skills/crypto-data/SKILL.md index 7011222..72f9de0 100644 --- a/skills/crypto-data/SKILL.md +++ b/skills/crypto-data/SKILL.md @@ -102,7 +102,10 @@ blockrun_dex({ query: "WETH", chain: "base" }) // scope to a chain ## blockrun_defi — TVL & yields (DefiLlama) -Path-based, GET only. +Path-based, GET only. **Base only** — `sol.blockrun.ai` does not serve `/v1/defillama/*` +and answers `404`, which reads like a bad path rather than a wrong chain. The tool checks +the active chain and refuses with that explanation before spending the round trip; if the +user needs DeFi data, switch back with `blockrun_wallet action:"chain" chain:"base"`. | path | cost | returns | |---|---|---| diff --git a/skills/modal/SKILL.md b/skills/modal/SKILL.md index dbdbe21..6660a3e 100644 --- a/skills/modal/SKILL.md +++ b/skills/modal/SKILL.md @@ -18,6 +18,13 @@ triggers: Disposable remote containers (with optional GPU) via Modal, paid per call in USDC. No Modal account, no GPU procurement. +**Base only.** `sol.blockrun.ai` carries the `/v1/modal/*` routes but has no Modal backend +configured, so every action — create, exec, status, terminate — answers `503`. That reads +as "the sandbox service is down" rather than "wrong chain", which is exactly the wrong +conclusion to act on: retrying will not help. The tool checks the active chain first and +says so. Switch with `blockrun_wallet action:"chain" chain:"base"`. Prices below are Base +prices and include its per-transaction fee. + ## READ THIS BEFORE SETTING `timeout` **`timeout` is the BILLED lifetime, charged upfront in full, and never refunded — not an idle timeout.** Above 300s the price switches from a flat rate to **per-hour billing for the entire duration you ask for**, whether you use it or not. Terminating early refunds nothing.