MCP Integration
Feature: F022, F044, F045, F046, F047 | Status: Shipped in v0.12.0
Cognition Engines exposes 14+ tools via the Model Context Protocol for integration with Claude Code, Claude Desktop, OpenClaw, and any MCP-compliant agent.
Endpoint
Section titled “Endpoint”http://your-server:9991/mcpStreamable HTTP - handles both POST (tool calls) and GET (SSE events).
Primary Tools (Start Here)
Section titled “Primary Tools (Start Here)”| Tool | Description |
|---|---|
pre_action (PRIMARY) |
All-in-one pre-action check: queries similar past decisions, evaluates guardrails, fetches calibration context, extracts patterns, and optionally records the decision. One call replaces query_decisions + check_action + log_decision. |
get_session_context (PRIMARY) |
Full cognitive context for session start: agent profile (accuracy, Brier, tendency), relevant decisions, guardrails, calibration by category, overdue reviews, and confirmed patterns. Available in JSON or markdown for system prompt injection. |
ready (PRIMARY) |
Prioritized cognitive maintenance queue: overdue reviews, calibration drift, stale decisions. Filter by priority, type, category. |
Graph Tools (F045)
Section titled “Graph Tools (F045)”| Tool | Description |
|---|---|
link_decisions |
Create typed edges between decisions (relates_to, supersedes, depends_on) with optional weight |
get_graph |
Query subgraph around a decision with configurable depth and edge type filters. Returns nodes with metadata and weighted edges. |
get_neighbors |
Lightweight neighbor query - direct connections for a decision with edge types and weights |
Granular Tools (Fine-Grained Control)
Section titled “Granular Tools (Fine-Grained Control)”| Tool | Description |
|---|---|
query_decisions |
Search past decisions with optional bridge_side (prefer pre_action) |
check_action |
Validate against guardrails (prefer pre_action) |
log_decision |
Record a decision manually — last resort when pre_action wasn’t used |
review_outcome |
Record what actually happened |
get_stats |
Calibration statistics (prefer get_session_context) |
get_decision |
Full decision details by ID |
get_reason_stats |
Which reason types predict success |
update_decision |
Update tags/pattern on existing decisions |
record_thought |
Capture chain-of-thought reasoning steps |
Recommended Workflow
Section titled “Recommended Workflow”Session start → get_session_context (load cognitive context) ↓Maintenance → ready (check for overdue reviews, drift) ↓Decision point → pre_action (query + guardrails + record) (auto_record: true) → returns decisionId ↓During work → record_thought (capture reasoning) (decision_id: from above) → thoughts attach in real-time ↓After work → update_decision (finalize decision text) (id: decisionId) ↓Link related → link_decisions (explicit relationships) ↓Later → review_outcome (record success/failure)Multi-Agent Isolation
Section titled “Multi-Agent Isolation”When multiple agents share a single MCP connection (e.g. Claude Code sub-agents), pass agent_id to isolate deliberation streams:
pre_action(agent_id: "planner", ...) → decisionId: "abc123"record_thought(agent_id: "planner", decision_id: "abc123", text: "...")update_decision(id: "abc123", ...)Each agent’s thoughts are tracked via composite keys (agent:{id}:decision:{id}), preventing cross-contamination.
When to Use log_decision
Section titled “When to Use log_decision”log_decision is a last resort for recording decisions without prior context. Use it only when:
- The agent didn’t call
pre_action(legacy or spontaneous decision) - You need full manual control over all fields
- No deliberation tracking is needed
For the standard flow, pre_action(auto_record: true) + record_thought + update_decision is always preferred.
Claude Code CLI
Section titled “Claude Code CLI”Add to your project’s .mcp.json (or global ~/.claude.json):
{ "mcpServers": { "decisions": { "command": "npx", "args": [ "mcp-remote@latest", "http://your-server:9991/mcp", "--allow-http", "--header", "Authorization: Bearer YOUR_CSTP_TOKEN" ] } }}On Windows, use cmd as the command:
{ "mcpServers": { "decisions": { "command": "cmd", "args": [ "/c", "npx", "mcp-remote@latest", "http://your-server:9991/mcp", "--allow-http", "--header", "Authorization: Bearer YOUR_CSTP_TOKEN" ] } }}Claude Desktop
Section titled “Claude Desktop”Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{ "mcpServers": { "decisions": { "command": "npx", "args": [ "mcp-remote@latest", "http://your-server:9991/mcp", "--allow-http", "--header", "Authorization: Bearer YOUR_CSTP_TOKEN" ] } }}OpenClaw Configuration
Section titled “OpenClaw Configuration”Add to your OpenClaw gateway config:
mcp: servers: cognition-engines: url: http://your-server:9991/mcp headers: Authorization: "Bearer your-token"Stdio Transport
Section titled “Stdio Transport”python -m a2a.mcp_serverExample: Pre-Action Tool
Section titled “Example: Pre-Action Tool”{ "name": "pre_action", "arguments": { "action": { "description": "Refactor auth module to use JWT", "category": "architecture", "stakes": "high", "confidence": 0.82 }, "reasons": [ {"type": "analysis", "text": "Stateless auth scales better for microservices"}, {"type": "pattern", "text": "Team successfully used JWT in 2 other services"} ], "tags": ["auth", "jwt", "refactor"], "pattern": "Stateless auth scales better than session-based" }}Returns: allowed status, relevant past decisions, guardrail results, calibration context, confirmed patterns, and optionally a recorded decision_id.
Example: Session Context Tool
Section titled “Example: Session Context Tool”{ "name": "get_session_context", "arguments": { "task_description": "Build authentication service for user API", "format": "markdown" }}Returns: markdown-formatted cognitive context ready for system prompt injection, including agent profile, relevant decisions, guardrails, calibration by category, and confirmed patterns.
FORGE Plugin for Claude Code
Section titled “FORGE Plugin for Claude Code”FORGE is a Claude Code plugin that implements the full decision loop as a protocol:
Fetch → Orient → Resolve → Go → Extract
| Phase | What happens | Tool used |
|---|---|---|
| Fetch | Load cognitive context at session start | get_session_context |
| Orient | Check guardrails before non-trivial decisions | pre_action |
| Resolve | Stream micro-thought deliberation (10+ signals/decision) | record_thought |
| Go | Execute with confidence, gate HIGH/CRITICAL on confirmation | update_decision |
| Extract | Review outcomes, distill patterns | review_outcome |
Installation
Section titled “Installation”claude --plugin-dir ./path-to-forge-pluginComponents
Section titled “Components”- Skill (
skills/forge-protocol/SKILL.md) - Protocol rules loaded contextually - Hooks (
hooks/hooks.json) - SessionStart injects protocol, PreToolUse gates risky ops, Stop enforces reflection - MCP (
.mcp.json) - Connects to the decisions server - Commands -
/forge:statusdashboard,/forge:reflectbatch review
vs JSON-RPC
Section titled “vs JSON-RPC”MCP adds session management overhead. For stateless workflows, the JSON-RPC API via cstp.py is simpler. Use MCP when your agent platform expects it.