Skip to content

Knowing Paths and Doing Paths ​

Where This Page Sits

This page is not a theory of binding. The coordinate system for what binds and what does not is in Proposal vs. Binding. What is decided here is an operating rule: whether one request is finished on the knowing path, or carried on to the doing path.

"1.2 RAG and MCP" in IV.1 Patterns wrote about how knowledge outside the model is fetched. This page writes about the boundary beyond it. The point is not to mix the path for knowing with the path that changes state.

What This Page Covers ​

  • What RAG handles, and what it does not
  • What MCP handles, and what it does not
  • Why the result of a reference is not permission to act
  • Splitting the path used first by the kind of request
  • Where this sits in the five layers

What This Page Does Not Cover ​

1. The Two Contrasts Are Different Things ​

The centre of IV.1 was this contrast.

  • RAG: cut documents and look for similar sentences
  • MCP: point at a place and take source text or an API result

As a contrast about how knowledge is fetched, it still holds. In the field, though, another contrast happens at the same time.

  • Knowing: read documents, source text, or a current value, and answer
  • Doing: change a setting, open a ticket, restart a process

RAG vs. MCP is not another name for that second contrast. MCP is used for knowing as well. The output of RAG is not permission to act.

AxisRAGMCP
What it isA type that searches and hands the result to generationA protocol where a host and a server exchange capabilities and context
How knowledge is fetchedSimilarity search over scrapsPointing at a place — a section, an article, an API
ExecutionIt has noneIt can have one through tools/call. resources/read is a read
FreshnessDepends on the index being updatedTakes the value as of the call
PermissionBeing able to read a document and being allowed to change it are differentBeing able to connect and being allowed to change are different

It is not either-or. The two may be stacked on one job.

2. What Each One Handles ​

What RAG Handles ​

From outside documents, it finds the part related to the present question and puts it beside generation. It suits write-ups on an internal wiki, draft procedures, and the text of past cases.

What RAG Does Not Handle ​

  • Guaranteeing the "current value" of a running system
  • Changing settings, opening tickets, restarting
  • Making an amendment absent from the index count as known
  • Turning a procedure it picked up into permission to act
  • Keeping the access control that was on the original document

The last one is easy to miss. Put a document only HR may read into the index, and no distinction of permission remains on the search side. Who may read what SHOULD (should) be designed when the index is built.

What MCP Handles ​

The Model Context Protocol is the agreement between a host and a server. What a server can offer is mainly these three.

OfferingCall namesMeaning
Tooltools/list / tools/callAn operation that can be run. Read-only operations included
Resourceresources/list / resources/read / resources/subscribeData that can be read. Files, records, a clause of a specification
Promptprompts/list / prompts/getA form for how to use it

It suits work where a place is pointed at and taken: a statute, an RFC, the current replica count, the current translation. Offer a writing Tool, and state can be changed as well.

What MCP Does Not Handle ​

  • The final judgment of whether an operation may be run. That judgment belongs to the host, Doctrine, and approval
  • Search quality itself. Putting scrap search inside a Tool leaves it scrap search
  • What stands in after the server stops. How it stops belongs in the design

Work that needs no judgment MUST NOT (must not) be made into MCP. An ordinary program will do. Placing things by the amount of judgment is in II.2 Placement.

3. Common Mix-ups ​

Asking "RAG or MCP" invites these mix-ups.

  1. Thinking MCP is only for execution. resources/read and read-only tools/call have been forgotten.
  2. Thinking RAG is the knowledge itself. RAG is not a place to hold things. It is a type that searches and hands over.
  3. Thinking MCP has replaced RAG because the RAG was put inside an MCP server. The inside is still search.
  4. Thinking that being listed in tools/list is permission to run. Permission is given by constraints on the host side.

The fourth has help on the specification side too. MCP tool annotations (readOnlyHint / destructiveHint / idempotentHint / openWorldHint) are how a server declares the nature of its own tools. The specification states, however, that these are hints and not a guarantee of behavior, and that tool use decisions MUST NOT (must not) be made on annotations received from untrusted servers. A tool with no annotations is treated as destructive by default.

Annotations are material for listing reads and writes apart. They are not grounds for permission. See MCP Security for the detail.

Here are combinations that work.

  • Write-ups from RAG, articles from resources/read or a reference Tool
  • Document search itself made into a Tool such as search_docs
  • A current value checked with a read-only Tool, a change made with a writing Tool on a separate server

4. How It Breaks When the Boundary Is Ignored ​

Put the knowing path and the doing path at the same entrance, and this happens.

CrowdWhat happens
Changing things on an old procedure picked up by RAGThe document is old. The agent runs it. The effect lands on the real system
Sending "what is the policy" to a writing ToolIt gets slower. A side effect occurs. Permission is attached to a question that needs none
Answering a current value from the indexed design document aloneA drift between the document and what is running goes unnoticed
Listing reference Tools and change Tools in one listRoom remains for the model to pick a writing tool with a similar name
Reading text returned by the knowing path as an instructionAn instruction written in a document becomes the trigger for a write

The last row holds regardless of freshness. Even with the index up to date, text that says "run the following" does the same thing. This is MCP06 (Prompt Injection via Contextual Payloads) in the OWASP MCP Top 10.

The boundary is not a taste in implementation. In work that has change operations, it is a control on reliability.

The result of a reference MUST NOT (must not) become permission to act. That proposition has a sibling. The result of a reference MUST NOT (must not) be read as an instruction.

5. The Shape It Takes in Production ​

Split into three duties. Not product names. Duties.

DutyWhat it holdsWhat does not go there
KnowingFragments of documents, a clause of source text, the current valueChange operations
JudgingWhether it suffices, whether it is stale, whether it may be runThe search index itself, connection settings
DoingA permitted tools/callFull procedure documents, policy text

Judging is Agent and Doctrine in the five layers. The entrance to the doing path is the MCP layer. The knowing path splits across RAG (most often the way Agent fetches), Memory, and MCP's Resource and read-only Tools.

6. Choosing the Path by the Kind of Request ​

Example questionUse firstDo not use first
What is the incident procedure for this serviceRAG or resources/readThe restart Tool
How many replicas are there nowA read-only tools/callThe old design document alone
May replicas be raised to 3Judgment, approval, and a writing tools/callOne line returned by RAG

Documents and current values SHOULD (should) be checked apart before a change. The name, arguments, and result of a writing Tool SHOULD (should) be kept.

Put into the names of the implementation, the whole flow looks like this.

7. Relation to the Five Layers ​

A pattern is not another name for a layer. The same stance as 1.4 of IV.1.

LayerRole at this boundary
DoctrineThe conditions for running, prohibitions, the line where approval is required
AgentSplitting whether knowing suffices, a read is needed, or a change is needed
SkillsProcedures and viewpoints. Not the connection itself
MemoryRelations and history of our own work. Source text of statutes and RFCs does not go here
MCPConnection to outside. Reads and writes split by server or by Tool

Even if Skills says restarting is allowed, it cannot be run without a Tool that calls a restart. Conversely, even if a restart Tool is listed in tools/list, it must not be run when Doctrine forbids it. That asymmetry is handled in Permission vs. Authority.

RAG on cloud Projects and Citations in the Messages API are implementations on the knowing side. GraphRAG is a type that knows by following relations. It does not become the doing side.

8. Summary ​

RAG and MCP do not compete. They sit at different layers.

  • To search write-ups, RAG
  • To point at an article, a section, or a current value, MCP's Resource or a read-only Tool
  • To change state, a writing Tool beyond approval
  • For what remains of relations, Memory
  • Whether it may be done, Doctrine
  • Which to choose, Agent

There is no single right answer in choosing a type. Look at the failures that actually happened, and split the knowing path from the doing path.

Released under the MIT License.