The Backyard Quarry: Turning Rocks Into Data

Another round of tech layoffs rolled through the industry recently, and I was one of the people caught in it.

If you’ve worked in tech for any length of time, you know the routine that follows. Update the résumé. Reach out to contacts. Scroll job boards. Try to figure out which technologies the market is currently excited about and which ones have quietly drifted into irrelevance.

After a few days of that cycle, I found myself spending more time outside than in front of a laptop.

One afternoon, walking around the yard, I noticed something interesting.

My backyard contains a surprisingly large dataset.

Rocks.

Pile of Rocks
Sample of the rocks from the Backyard Quarry used for the dataset.

Lots of rocks.

Some are the size of peas. Others are roughly the size of a car engine. A few fall somewhere in the unsettling range between “wheelbarrow recommended” and “this probably requires heavy machinery.”

Naturally, I had the same thought many people eventually have when staring at a large pile of rocks:

I could probably sell these.

A small stand near the road. A few piles sorted by size. Maybe a sign that says “Landscaping Rock.” It’s not exactly a venture-backed startup, but stranger side businesses have existed.

Unfortunately, engineers have a well-known weakness.

We rarely do things the simple way.

If I was going to sell rocks, I wasn’t just going to pile them on a table.

I was going to build a system.

The Dataset

The moment you start thinking about the rocks as inventory, a familiar set of questions appears.

How many rocks are there?

What kinds?

Which ones are small decorative stones and which ones fall firmly into what I’ve started calling Engine Block Class?

Like many real-world datasets, this one has significant variability.

Some objects are a few grams. Others weigh enough to require careful lifting technique and a brief internal conversation about life choices.

At a glance, the dataset looks chaotic. But underneath the chaos are patterns.

Different sizes. Different shapes. Different colors. Different geological types. Some rocks are smooth river stones. Others are jagged fragments that look like they escaped from a small landslide.

If you squint a little, you start to see the outlines of something familiar to anyone who works with data systems.

A collection of physical objects that could be represented as structured records.

The Engineer’s Curse

In theory, selling rocks is simple.

  • Step one: collect rocks.
  • Step two: put them in a pile.
  • Step three: wait for someone to stop their car and decide they want landscaping material.

But once you start thinking about it from an engineering perspective, the questions multiply.

Should each rock have an identifier?

Should there be photographs?

Should the system track weight or dimensions?

What about classification?

It’s probably useful to distinguish between Pebble Class rocks and Wheelbarrow Class rocks.

And what about the really large ones — the ones that are clearly in the Engine Block Class, which itself appears to span everything from motorcycle engine scale to something closer to a semi-truck.

Once you start thinking about these questions, the simple rock pile begins to look like something else entirely.

A catalog.

A dataset.

A system waiting to happen.

From Rocks to Records

What if every rock had a record?

Something simple at first.

An identifier. A few attributes. Maybe a photo.

Conceptually, it might look like this:

rock_id
weight
dimensions
color
rock_type
location_found
status

Each rock in the yard becomes a digital object — a structured record representing something in the physical world.

In other words, each rock now has a digital twin.

That might sound slightly ridiculous in the context of landscaping stones, but the idea is surprisingly powerful.

Across many industries, organizations are trying to solve exactly this problem: how to connect messy physical reality with structured digital systems.

Manufacturers track machine parts.

Museums catalog artifacts.

Farmers track crops.

Logistics companies track inventory moving through warehouses.

In each case, the challenge is similar.

A physical object exists somewhere in the world.

We want to represent it in a way that software systems can understand.

The Backyard Quarry

At this point the rock pile had acquired a new name.

The Backyard Quarry.

Partly as a joke, and partly because it captured the spirit of the project. What started as a casual observation had turned into a small experiment in data modeling, object cataloging, and system design.

The dataset might be small.

The objects might be rocks.

But the underlying questions are surprisingly rich.

How do you represent physical objects in software?

How do you capture information about them?

How do you search and organize the resulting data?

And how do these systems scale when the number of objects grows from a few dozen to thousands — or millions?

What Comes Next

Over the next few posts in this series, I’m going to explore those questions by building a small system around the Backyard Quarry.

We’ll look at things like:

  • designing a schema for physical objects
  • capturing images and measurements
  • generating 3D models using photogrammetry
  • building ingestion pipelines
  • indexing and searching the dataset

All starting from a simple collection of rocks.

The world has no shortage of complicated engineering problems.

Sometimes the best place to explore them is somewhere simpler.

Like a pile of rocks in the backyard.

And if you happen to need a carefully documented specimen from the Backyard Quarry, inventory is currently available.

Shipping, however, may exceed the value of the rock itself.

Facebooktwitterredditlinkedinmail

The End of Glue Code: Why MCP Is the USB-C Moment for AI Systems

Architecting the Zero-Glue AI Stack with the Model Context Protocol

A practical look at building protocol-driven AI systems with the Model Context Protocol (MCP).

Two years ago, if you wanted an AI agent to perform a task—auditing a rare book archive, updating a Notion database, or reconciling records in a system—you had to write a custom integration layer.

Traditional AI integrations (M × N complexity)

A flowchart illustrating the M x N integration problem. Two AI models (Model A and Model B) are shown with individual, overlapping lines connecting directly to three separate tools (Tool A, Tool B, and Tool C), creating a dense, brittle "spaghetti" architecture.
Figure 1: The exponential complexity of traditional point-to-point AI integrations, where every new model requires a unique connector for every available tool.


You spent weekends mapping JSON fields to LLM function calls, building fragile wrappers around APIs, and hoping the upstream interface didn’t change.

When it did, everything broke.

We were building a tangled web of point-to-point integrations.

In software engineering terms, this is the M × N problem:

M models x N tools = MxN integrations

Every new model required new connectors.
Every new tool required new wrappers.

By 2026, that architecture has become a technical liability.

A different model is emerging: protocol-based AI systems.

And the protocol at the center of that shift is the Model Context Protocol (MCP).


The Protocol Shift: What MCP Actually Is

The Model Context Protocol is an open standard for connecting AI systems to tools and data.

The easiest analogy is USB-C for AI infrastructure.

Where does MCP actually sit in an AI system?

Layered architecture diagram of an MCP-based AI system showing applications, agent orchestration, the Model Context Protocol layer, tools and resources, and underlying data systems.
The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.

Instead of building custom integrations between every model and every tool, developers implement a single MCP server that exposes capabilities in a standardized way.

Agents then discover and use those capabilities dynamically.

In this architecture:

Protocol-based architecture (M + N complexity)

A hierarchical architecture diagram showing an AI Agent connecting via the MCP Protocol to an MCP Server. The server manages three distinct primitives—Tools, Resources, and Prompts—which in turn interface with underlying databases, APIs, and enterprise systems.
Figure 2: The Model Context Protocol (MCP) acts as a universal interface, allowing a single agent to dynamically discover and orchestrate tools, resources, and prompts via a unified server.


Rather than hard-coding what a model can access, the server describes its capabilities to the agent.

When an agent connects, it performs a protocol handshake and discovers exactly what is available.

No manual wiring required.

A side-by-side comparison. The left side shows a "Spaghetti" model with multiple models criss-crossing connections to tools. The right side shows the "Hub-and-Spoke" MCP model, where models and servers connect through a central MCP Standard, demonstrating a cleaner and more scalable system design.
Figure 3: Comparing the linear scaling of MCP (M + N) against the unsustainable growth of traditional manual wiring (M x N).



The Three Primitives of MCP

MCP works because it simplifies tool integration into three core primitives.

1. Resources (The Nouns)

Resources are structured data exposed to the agent.

Examples might include:

  • a rare book’s metadata record
  • a digitized archival scan
  • a Notion page
  • a database entry

The key point: the agent doesn’t scrape or guess.
It accesses structured resources intentionally exposed by the server.


2. Tools (The Verbs)

Tools are executable actions.

An MCP tool is essentially a function with a strict schema that tells the agent how to call it.

Example:

// Define a tool in the MCP Forensic Analyzer
server.tool(
"audit_book",
{ book_id: z.string().describe("The archival ID of the volume") },
async ({ book_id }) => {
const metadata = await archive.getMetadata(book_id);
const result = await forensicEngine.audit(metadata);
return {
content: [{ type: "text", text: JSON.stringify(result) }]
};
}
);

Because tools include a JSON schema, the model knows:

  • what parameters exist
  • which are required
  • what type of result will be returned

This dramatically improves reliability compared to traditional prompt-based tool use.

3. Prompts (The Recipes)

Prompts define reusable workflows.

Instead of embedding a fragile 500-line system prompt inside your application, you can expose a structured prompt template.

Example:

Forensic Audit Template
- Retrieve metadata
- Check publication year consistency
- Verify publisher watermark
- Compare against known first-edition patterns

The agent can then dynamically load and use that prompt when performing an audit.

Case Study: The MCP Forensic Analyzer

To explore MCP in practice, I built an MCP Forensic Analyzer.

The system analyzes archival records and identifies inconsistencies between historical metadata and physical characteristics.

Before MCP, implementing this workflow required a large amount of orchestration code:

  1. Fetch metadata
  2. Normalize fields
  3. Construct prompt
  4. Send to LLM
  5. Parse result
  6. Retry if formatting failed

With MCP, the architecture becomes dramatically simpler.

The agent discovers available tools and invokes them directly.

The MCP Discovery Loop

Instead of manually wiring integrations, the agent follows a protocol lifecycle.

  1. Protocol Negotiation

The client and server establish a connection
(STDIO for local tools or SSE for remote services).

  1. Schema Exchange

The server returns a manifest of available tools, resources, and prompts.

  1. Intent Mapping

The agent matches the user request to the appropriate tool.

  1. Tool Execution

The tool is invoked with structured parameters.

A sequence diagram involving a User, AI Agent, Archival MCP Server, and Data Layer. It shows the agent requesting a tool list, the server returning forensic tools, the agent selecting 'audit_book', and the server querying the database to return a structured forensic result back to the user.
Figure 4: The MCP Handshake and Discovery Loop. The agent identifies capabilities at runtime rather than relying on hard-coded instructions.


Unlike traditional systems that cram every tool into the system prompt, MCP allows the agent to fetch the tool definition only when its reasoning engine determines it is required. The important shift here is that the agent discovers the system instead of being manually wired to it.

Why MCP Is Emerging Now

Three shifts in AI architecture made MCP almost inevitable.

  1. Agents Need Tool Discovery
  • Hard-coded function lists don’t scale as systems grow.
  • Agents need the ability to discover capabilities dynamically.
  1. Context Windows Exploded
  • Modern models can reason over large tool catalogs and schemas.
  • Instead of embedding everything in a single prompt, agents can now navigate structured capability manifests.
  1. Enterprises Need Governance
  • Prompt-level guardrails are brittle.
  • Protocol-level permissions are enforceable.
  • MCP moves governance into the infrastructure layer.

MCP + Agentic Memory

Another emerging pattern in 2026 is combining MCP with agent memory systems.

MCP provides the agent’s eyes and hands.

Memory provides the identity.

In the MCP Forensic Analyzer, memory operates on two levels.

Working Memory
– The specific book currently under investigation.

Semantic Memory
– A vector database storing historical observations.

Example:

“First editions from this publisher often contain a watermark on page 12.”

As the system performs more audits, it accumulates domain-specific knowledge.

The agent doesn’t just run tools.

It develops forensic intuition.

Enterprise Governance: Why REST Isn’t Enough

A common question is:

“Why not just use REST APIs?”

REST APIs were designed for application integrations, where developers explicitly code each interaction.

MCP targets a different use case: machine-to-machine autonomy.

Three architectural advantages emerge.

1. The M×N → M+N Scaling Shift

Without MCP:

M models × N tools = M×N integrations

With MCP:

M models + N MCP servers = M+N integrations

A new model can immediately interact with existing systems without additional integration work.

2. Permissioned Recall

Enterprise systems require strict data boundaries.

An MCP server can enforce Row-Level Security (RLS) at the protocol layer.

If a junior auditor runs the agent, the server only returns resources they are authorized to access.

The agent literally cannot see restricted data.

3. Auditability

Enterprise AI systems must be explainable.

MCP provides structured logging for:

  • tool calls
  • resource access
  • returned data

This creates a defensible audit trail of every decision made by the agent.

From Hackathon Projects to Production Systems

One MCP example experiment I did occurred for the Notion MCP Challenge.

That project proved the protocol works.

The next step is evolving that prototype into a Production AI Mesh.

In upcoming posts in this series we’ll explore:

  • Multi-Agent Handoffs
    (specialized agents collaborating)
  • Edge AI with Small Language Models
    (running agent systems without large GPU infrastructure)
  • Enterprise Governance Layers
    (secure, auditable AI systems using databases like Oracle 26ai)

MCP is no longer just a developer curiosity.

It’s becoming the foundation for production-grade agent architectures.

Ready to Explore the Code?

Repository
MCP Forensic Analyzer

Learn More About the Protocol
Model Context Protocol Documentation

Up Next in the “Zero-Glue” Series:
– The Forensic Team: Multi-Agent Handoffs and Orchestration.
– AI on a Toaster: Running SLMs on the Edge.
– The Secure Archive: Governance with Oracle 26ai.

Facebooktwitterredditlinkedinmail