Skip to content

Naragate v0.3.0 — MCP for any agent surface

Choose a tag to compare

@masdevid masdevid released this 15 Sep 04:15
· 44 commits to master since this release

Naragate v0.3.0 — use it from any agent surface

The headline of this release: Naragate is no longer web-UI-only. The same reality-gap engine now runs through an MCP server, so the exact same experience works on the custom web UI and on Claude Code, Claude Desktop, Cursor, Windsurf, Zed, VS Code, opencode, Codex, or any MCP-capable harness.

🔌 MCP server (new)

  • 19 tools exposed over stdio — 9 high-level plus full skills/*/tools.yaml parity:
    • High-level: analyze_narrative, analyze_template, list_templates, get_claim, get_reality_gap, list_history, get_trend_summary, get_policy_precheck, get_usage
    • Low-level: sectors_company_report, sectors_subsector_report, sectors_quarterly_financials, sectors_daily_transaction, sectors_news, sectors_corporate_actions, sectors_filings, evidence_cache_get, evidence_cache_merge, llm_complete
  • Resources: naragate://templates, naragate://usage, naragate://history, naragate://claim/{claim_id}
  • Credit-safe by construction: the MCP server is a thin client over the backend and never calls Sectors directly; a non-web run shares the web UI's Evidence Graph cache (0 extra Sectors calls on a warm cache)
  • Parity enforced by tests: mcp/tests/test_parity.py asserts every tool declared in any skills/*/tools.yaml exists on the server
  • Install: pip install -e mcp (or uvx naragate-mcp) · config for every harness in mcp/README.md

🧩 Backend

  • POST /api/v1/analyze — non-streaming counterpart to /stream/evaluate; the single shared entry point for non-web clients
  • GET /api/v1/templates — the 12 curated narratives as the source of truth for both web tiles and non-web clients
  • GET/POST/DELETE /api/v1/tools/* — low-level agent primitives (Sectors fetches, Evidence Graph cache, one-shot LLM completion)
  • Policy detection fix: a policy keyword now wins when the narrative names a member ticker (HBA … ADRO → coal, … bijih nikel … INCO → nickel); unrelated tickers keep the single-ticker path. Added the nickel sector
  • Policy pre-check is now scoped to the claim's own sector — a coal/nickel result never shows oil-gas names

🧪 Tests

  • e2e/templates — 13 Playwright tests driving all 12 dashboard templates (SSE mocked): verdict↔band coherence, section-intent, policy section, ticker guardrail (0 credits)
  • e2e/history — read-only live /history coherence tests, plus an opt-in (RUN_REAL_PIPELINE=1) real-pipeline generator
  • Backend 347 passed, MCP 17 passed

📚 Docs

  • Main README: new "Use Naragate from any MCP agent" section, MCP in the architecture diagram/tech stack/features
  • skills/ and agents/ READMEs explain tools.yaml and MCP as the portable data layer
  • CONTEXT.md: new MCP Server and Agent Surface domain terms + a no-direct-Sectors rule

⛽ Credits

Non-web surfaces add zero Sectors cost: MCP tools route through the same backend pipeline and cache, and cache-only tools never touch Sectors. Parity/credit-safety are covered by tests.