Skip to main content

Protocol vs Runtime

MCP and IntentusNet operate at different layers. Understanding this distinction helps you design better integrations.

The Distinction

Protocol Layer (MCP)

MCP defines how to communicate:

Message Format

{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_documents",
"arguments": {
"query": "climate change",
"limit": 10
}
}
}

Tool Discovery

{
"tools": [
{
"name": "search_documents",
"description": "Search the document database",
"inputSchema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"limit": {"type": "integer"}
}
}
}
]
}

What MCP Specifies

ConcernMCP Specification
Message encodingJSON-RPC 2.0
Tool declarationSchema format
Context passingPredefined fields
Error formatJSON-RPC errors

What MCP Doesn't Specify

ConcernNot Specified
Execution orderUp to implementation
Retry behaviorUp to implementation
RecordingUp to implementation
PolicyUp to implementation

Runtime Layer (IntentusNet)

IntentusNet defines how to execute:

Routing Semantics

# Deterministic agent selection
agents = registry.find_by_capability("search_documents")
ordered = sort_deterministically(agents)
selected = ordered[0] # Always the same for same input

Execution Recording

# Every execution recorded
record = ExecutionRecord(
header=ExecutionHeader(
executionId="exec-123",
envelopeHash="sha256:...",
replayable=True
),
events=[...],
finalResponse={...}
)

Policy Enforcement

# Policy checked before execution
if not policy_engine.allows(intent, agent, role):
return PolicyDenialError(...)

What IntentusNet Specifies

ConcernIntentusNet Specification
Agent selectionDeterministic ordering
Execution recordingImmutable records
ReplayReturn recorded output
PolicyAllow/deny/filter
Error codesTyped enum

What IntentusNet Doesn't Specify

ConcernNot Specified
Wire formatUse any transport
Tool schemaUse MCP or custom
Discovery protocolRegistry-based

Complementary Roles

┌─────────────────────────────────────────────────────────────┐
│ Your Application │
├─────────────────────────────────────────────────────────────┤
│ │
│ MCP Client (Claude) │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MCP Server │ │
│ │ • Handles JSON-RPC │ │
│ │ • Exposes tool schema │ │
│ │ • Parses requests │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MCPAdapter │ │
│ │ • Maps MCP → IntentEnvelope │ │
│ │ • Maps AgentResponse → MCP │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ IntentusNet Runtime │ │
│ │ • Deterministic routing │ │
│ │ • Execution recording │ │
│ │ • Policy enforcement │ │
│ │ • Crash recovery │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Your Tools │ │
│ │ • Business logic │ │
│ │ • External API calls │ │
│ │ • Database operations │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Decision Matrix

NeedSolution
Expose tools to ClaudeMCP
Standard message formatMCP
Tool discoveryMCP
Deterministic routingIntentusNet
Execution recordingIntentusNet
Replay capabilityIntentusNet
Policy enforcementIntentusNet
Crash recoveryIntentusNet

Example: Using Both

# MCP Server: Protocol handling
from mcp import Server

server = Server()

@server.list_tools()
async def list_tools():
# MCP: Tool discovery
return [
{"name": "search", "description": "Search docs", ...},
{"name": "create", "description": "Create doc", ...},
]

@server.call_tool()
async def call_tool(name: str, arguments: dict):
# IntentusNet: Execution semantics
result = adapter.handle_mcp_request({
"tool": name,
"parameters": arguments
})

# MCP: Response format
return {"content": [{"type": "text", "text": json.dumps(result)}]}

When You Need Which

Need MCP Only

  • Prototyping with Claude
  • Simple tool exposure
  • No audit requirements
  • Stateless tools

Need IntentusNet Only

  • Internal agent systems
  • No external model clients
  • Strong execution guarantees needed
  • Custom wire protocols

Need Both

  • Production Claude integration
  • Audit/compliance requirements
  • Complex multi-tool workflows
  • Fallback/reliability needs

Summary

AspectMCPIntentusNet
FocusCommunicationExecution
ScopeProtocolRuntime
StandardsMessage formatExecution semantics
ComplementaryYesYes

They work together: MCP defines how to talk, IntentusNet defines how to execute reliably.

See Also