← Tin's Posts · August 07, 2026 · 2 min read

MCP vs. API: Some Numbers (Spoiler: It's a Tie)

I said I'll actually run the comparison. I have.

Same digital product, two interfaces. A real OpenAPI for a small newsletter tool (Quillet - essentially a CRM - posts, publish, send-test, the boring admin ops). An MCP server wrapping the same code on the same instance. Same database, same auth, same tasks. Coding agents only — curl/scripts on the API, tools/list on the MCP. No vendor differences. No "raw API" shenanigans, where I'd invisibly cheat.

Seventy workflows. Seven tasks, both approaches, over five models.

Models: Composer 2.5, Grok 4.5, Claude Sonnet 5, GPT-5.6 Terra, GLM 5.2. Cheap-to-mid. No big brain thinking stack on purpose.

If you're already spending Opus cost tokens to babysit an integration, you will get the thing done. That is not what you optimize your product for. The interesting question is whether a normal agent - the kind that actually get stuff done - prefers a documented API or a tool menu. So that's what I ran.

Result on success: tie. Both workflows finished the pack. After cleaning two harness footguns (more on that below), the score is 70/70. OpenAPI 35/35. MCP 35/35. Every model clean on both sides.

Soft metrics (paired cells, medians):

OpenAPI MCP
Turns 9 9
Real time 13.2s 11.6s
Tokens in ~89k ~82k

Call it roughly ten percent. MCP is often a bit cheaper - time and tokens lean that way on about two-thirds of pairs. Texture by model: Grok, Sonnet, Terra, and GLM usually finish faster on MCP; Composer slightly favors OpenAPI. None of them failed one side and thrived on the other.

Ten percent doesn't pass the bar for me. These aren't deterministic tools, and the margins are wide.

I made errors. One first-pass miss looked like a double-send on OpenAPI (fixture had two eligible posts; the agent pivoted). Another wave failed because I baked in a wrong assumption (post didn't exist, and it should've) - hit MCP harder. Harness matters more than protocol did. Slight nudges to the experiment and the "preference" evaporated into margin.

So the take from my preview keeps: for coding-time integration, a good OpenAPI is enough.

I'm still compiling the full case study (I'll show you my homework - receipts, transcripts, the boring methodology). Stay tuned for that fuller review. I'll also cook up the next version of Quillet with the improvements. Easy to run, easy to manage, all from your terminal. Might as well leave the MCP in now I've made it.


Enjoyed this? Subscribe to get future posts by email.

Book a discovery call