Agent skills today are documentation. A protocol hands the model 70KB of prose and asks it to rebuild the executor itself — every session, from scratch, once per protocol. It is slow, it is expensive, and it does not compose.
Survivable for a demo that runs once. Not survivable for an agentic economy, where real models — not preset scripts — quote, swap and rebalance around the clock. Every protocol you add multiplies the tax, and both cost and latency compound. In finance latency is not polish: a quote is worth what it was worth a second ago.
mdcp is the missing standard.
One execute tool runs an entire strategy as a sandboxed program next to
the chain — signing, approval gating and replay protection enforced in code, never
described in prose.
Composability
Every protocol ships its own execution guide and expects the agent to rebuild quoting, approvals, signing and receipts from scratch — so a strategy spanning three protocols pays that tax three times. mdcp writes the hands once: extra protocols become extra lines in one program behind one approval. Add protocols and watch the ratio climb.
one tool per call · the manual comes with it
one program · one approval · any number of protocols
Measured, not asserted
We didn't benchmark against a strawman. We took each protocol's own AI artifact — Uniswap's skill suite verbatim, The Graph's and Hedera's MCP servers unmodified — and changed only the execution layer. Fresh agents, empty context, both arms in parallel, identical on-chain outcomes.
Four operations on live Sepolia through the production Trading API, one fresh agent each. mdcp lands within 1.7k tokens of itself whether the task is a balance read or a live swap; the official arm swings 26k, because every operation means re-deriving its own executor. Flat is what makes an integration budgetable.
BENCHMARK.md §1 level 3 · 4 public transactions on Etherscan
The same work at N = 1…10 subgraph targets, both arms on The Graph's
unmodified subgraph-mcp, live gateway, no model in the loop. The baseline's
transcript grows roughly linearly; mdcp stays nearly flat, because payloads are filtered
in the sandbox and only the aggregate crosses. At N=10 that is 92× less to read.
BENCHMARK.md §3 · deterministic sweep, s6-graph-sweep/sweep.csv
Why figure 2 diverges. Each target costs the baseline four round-trips
through the model — search, schema, financials, pools. mdcp makes exactly one
execute() call at every N. An agent re-reads its whole transcript on every
turn, so crossings don't add up — they compound.
BENCHMARK.md §3 · same sweep, boundaryCalls
Hedera's mirror-node MCP server ships 43 tools, one per REST endpoint, so an agent pays a round-trip per call and carries every raw response — holder lists, transaction records, base64 topic messages. mdcp filters and aggregates them in the sandbox. Payload into context 110× less; the catalog the client holds before any work, 4.7× smaller.
BENCHMARK.md §4 · live Hedera testnet · deterministic run
Against mirrornode-mcp-server — the same protocol, the same week — mdcp posts the largest margin in this repo: 47,766 B → 434 B of payload into context, 110× less, and 6 model round-trips → 1. That server generates one MCP tool per mirror-node endpoint, 43 of them, so the agent pays a round-trip per call and carries every raw response — holder lists, transaction records, base64 topic messages — through its context. mdcp filters and aggregates all of it in the sandbox and returns the answer. Deterministic run, both arms on Hedera's own unmodified tool definitions, live testnet: BENCHMARK.md §4.
| Protocol | Scenario | Agent tokens | Wall clock | Round-trips | To read |
|---|
N=1 per operation — we trust the direction and the mechanism, not the second decimal of any ratio. Raw logs, caveats and the excluded scenario: BENCHMARK.md
What you get
execute, resume, skills — no matter how many
chain capabilities sit behind them. The agent writes a program; the loop lives in the program.
The first execute broadcasts nothing. The whole strategy runs in a planning
pass and every transaction it intends comes back as one reviewable list.
QuickJS on WebAssembly — no network, no filesystem, no env. A program can ask for a swap; it cannot produce a signature.
Each chain write gets an intent hash over its economic fields only, so a re-quote after the price moves is still the same intent — not a second spend.
Every capability declares view, local or chain.
Only chain is gated. That is data on the tool, not a prompt instruction.
The Graph's own subgraph-mcp runs inside the sandbox — same binary in
both benchmark arms. Nothing is forked or reimplemented.