Yes. I didn't know or understand why I felt meh about run-of-the-mill raw tomatoes this until the Kenji article.
"Using mealy, off-season tomatoes is the primary unforgivable sin, but when it comes to BLT crimes, that's just the tip of the iceberg lettuce.
...
Off-season tomatoes are grown in warmer climates, picked when underripe, then treated with ethylene gas (a gas that is naturally produced by plants to trigger ripening in fruits) to produce their red color before they hit supermarket shelves. The result is tomatoes that are as bland as they are ruby-red.
Truly great tomatoes must be fully ripened on the vine, where they'll continue to develop flavor and sweetness. Look for plump tomatoes, with the heft and give of a water balloon. If you have a choice, look for substantial and meaty heirloom varieties with balanced sweetness and acidity, like Cherokee Purple or Brandywine.
Avoid tomatoes that feel light for their size, which means they have more air pockets inside and are typically better for saucing or salads."
"*A BLT is a tomato sandwich, seasoned with bacon.*
It wasn't until I tasted my first great tomato, at the vine-ripe old age of 22, that I finally understood the true nature of the BLT (and, by extension, why I'd never enjoyed tomatoes on my sandwiches or in my salads). Here we go: A BLT is not a well-dressed bacon sandwich. A BLT is a tomato sandwich, seasoned with bacon. From this basic premise, all else follows."
GGP says don't care about X because it's a social phenomenon, but frequently this position is a form of social identification.
You say: X might deeper than social, implying that social phenomena are not important. Thus agreeing with GP.
[edit: my position is pragmatic: If there's a broad or important phenomenon, your position on it should be individualized to the value of the phenomenon itself, not based upon some theory-of-origin category assignment.]
For me, trying to fine-tune a model to write "best day" prose I would accept over 80% of the time.
You are correct if we are talking about knowledge.
However it is bad at hyper-idiosyncratic, gritty style transfer.
I first noticed the issue when asking claude code to draft email responses. The choice of register was off. ("Register in writing refers to the level of formality and tone chosen to suit a specific audience, purpose, and context.")
I decided to talk all my HN comments and rewrite them in various bad LLM prose, and see if I could use DSPy to optimize a prompt using in-context-learning (ICL, I give it 10 examples of my HN comments) and the results were abysmal. RHLF fine-tuned frontier LLMs have a deep seated aversion to the target stylistic distribution of my comments.
I tried fine-tuning qwen3, llama, and gemma models. Instruct models are already so tuned that they could not be tuned.
This is using several hunded comments as gold targets and 5 different LLM degradations per gold as the input.
"The point of MCP is bundling those exact things into a standardized plugin that’s easy for people to share with others." Like... a CLI/API?
"MCP is useful because I can add one in a single click for an external service" Like... a CLI/API? [edit: sorry, not click, single 'uv' or 'brew' command]
"So yeah, the agent could write some those queries manually" Or, you could have a high-level CLI/API instead of a raw one?
"I don’t get why people get worked up over MCP" Because we tried them and got burned?
"to help us get more context into agents in a more standard way than everyone writing a million different markdown files and helper scripts." Agreed it's slightly annoying to add 'make sure to use this CLI/API for this purpose' in AGENTS.md but really not much. It's not a million markdown files tho. I think you're missing some existing pattern here.
Again, I fail to see how most MCPs are not lazy tools that could be well-scoped discoverable safe-to-use CLI/APIs.
You're making the convenience argument, but I'm making the architecture argument. They're not the same thing.
You say "a very simple API baked into the model's existing context is even better". So we agree? MCP's design actively discourages that better path.
"Agents are good at writing API requests, but not so good at knowing why, when, or what to use". This is exactly what progressive discovery solves. A good CLI has --help. A good API has introspection. MCP's answer is "dump all the tool schemas into context and let the model figure it out," which is O(N) context cost at all times vs O(1) until you actually need something.
"It's just a standard way to make plugins" The plugin pattern of "here are 47 tool descriptions, good luck" is exactly the worse-is-better tradeoff I'm describing. Easy to wire up, expensive at runtime, and it gets worse as you add more servers.
The NJ/MIT analogy isn't about complexity, it's about where the design effort goes. MCP puts the effort into easy integration. A well-designed API puts the effort into efficient discovery. One scales, the other doesn't.
The last time I looked at MCPs closely, they appeared to pollute context and just hang there consuming context constantly. Whereas a self-documenting API or CLI tool enabled progressive discovery.
Has this changed?
My uncharitable interpretation is that MCP servers are NJ design for agents, and high quality APIs and CLIs are MIT design.
Joseph Turian
lastname at gmail dot com
http://www.linkedin.com/in/turian
http://strictlydev.com/devs/turian