Skip to content

Releases: masdevid/naragate

Naragate v0.9.0 — naragate-mcp --local (embedded engine)

Choose a tag to compare

@masdevid masdevid released this 16 Sep 16:19

Naragate v0.9.0 — naragate-mcp --local (embedded engine)

The MCP server can now run the engine in its own process, so it needs no
backend process and no NARAGATE_BACKEND_URL:

pip install "naragate-mcp[local]"        # Python 3.12+
SECTORS_API_KEY=... naragate-mcp --local

LocalEngine starts the same FastAPI engine (uvicorn on a loopback port in a
daemon thread) and every tool routes through the existing REST client at that
in-process base URL — one engine, one Evidence Graph cache, one credit ledger.
Select it with --local, --embedded, or NARAGATE_ENGINE=embedded.

  • The optional [local] extra pulls naragate-engine (with a
    python_version >= "3.12" marker so 3.10/3.11 installs stay resolvable and
    can still use a remote backend).
  • Missing engine → a clear, actionable error.
  • Embedded config comes from the environment (SECTORS_API_KEY,
    OLLAMA_BASE_URL, OLLAMA_MODEL); per-user tokens and bind_sectors_key
    don't apply to a single local user.
  • Still prefer a shared engine? Run naragate-engine (or the
    ghcr.io/masdevid/naragate-engine image) and set NARAGATE_BACKEND_URL
    unchanged.

naragate-mcp 0.6.0. Tests: mode detection, base-URL routing, missing-engine
error, and an in-process integration test that boots the real engine and calls
list_templates / get_setup_status (0 Sectors credits).

Naragate v0.8.0 — Per-user MCP tokens + standalone engine

Choose a tag to compare

@masdevid masdevid released this 16 Sep 15:51

Naragate v0.8.0 — Per-user MCP tokens + a standalone engine

This release closes the gap between the web UI and non-web agent surfaces.

Per-user API tokens (MCP / skills / agents)

MCP had no cookie, so every non-web run used the backend's deployment key and
shared one credit ledger. Now each user mints a token in Settings → MCP &
API Access
(NARAGATE_TOKEN); the backend resolves it to the same email as
the web session, so a non-web run uses your own Sectors key, evidence cache
and credit ledger
. Tokens are stored hashed and revocable.

New MCP tools: whoami, get_setup_status, bind_sectors_key, plus full
follow-up Q&A parity — ask_followup, get_followup_suggestions,
next_followup_suggestion. Tool surface: 30 tools (15 high-level + 15
tools.yaml primitives).

Standalone engine (no hosted or Redis dependency)

MCP/skills/agents depend on an engine, never on the hosted domain. The
engine is now a one-command process:

pip install naragate-engine && SECTORS_API_KEY=... naragate-engine
# or
docker run --rm -p 5678:5678 -e SECTORS_API_KEY=... ghcr.io/masdevid/naragate-engine

The Evidence Graph cache degrades to an in-process store when Redis is
unreachable, so the engine runs with zero infrastructure. When no engine
answers, MCP returns an actionable offline hint.

Fixes & docs

  • Follow-up chat race condition — template chips are locked while the agent
    is still thinking, and the dismiss → answer → replace flow is single-flight.
  • Reconcile the agent list across all READMEs (agents now match the 13 skills;
    added filings-agent, follow-up, renderer) and correct the MCP tool count.
  • docker-compose now passes per-agent model overrides (previously dropped).

Naragate v0.7.6 — Teaser Scene 5 screenshot nudge

Choose a tag to compare

@masdevid masdevid released this 15 Sep 13:33

Teaser Scene 5 — screenshot nudge

The web-UI screenshot now sits 100px right and 20px down from centre
(overflow-hidden wrapper oversized by 200×40, top-left anchored, so the frame is
unchanged and there are no gaps).

Teaser-only change.

Naragate v0.6.2 — Optional API key at login + security hardening

Choose a tag to compare

@masdevid masdevid released this 15 Sep 11:12

Optional API key at login + input/security hardening

Login

  • The login page has an optional "Sectors API Key" field with a helper:
    optional — you can add or change this later in Settings. Provide it to bind
    immediately, or skip it and set it later.
  • The IP-bound wording is gone from the login copy (and the leftover IP i18n
    strings were removed).

Security

  • Narrative input hardened end to end: control characters stripped and
    length capped on the client, and max_length enforced by the API
    (an 8 kB narrative now returns 422).
  • Bulk analysis also redirects to /login when there is no session
    (single-analysis already did).
  • Security headers on the frontend: Content-Security-Policy,
    X-Content-Type-Options, X-Frame-Options, Referrer-Policy,
    Permissions-Policy. (CSP keeps 'unsafe-inline' for the Angular-inlined
    CSS; the app has no innerHTML sinks, so template escaping stays the
    primary XSS defense.)

Backend 406 tests, frontend production build clean.

Naragate v0.5.1 — Auto-renew Sectors account tokens

Choose a tag to compare

@masdevid masdevid released this 15 Sep 10:17

Sectors account tokens renew automatically

The Usage page's authoritative account block no longer depends on a manually
captured OAuth token.

What changed

  • Auto-renewal uses the dashboard's own login: POST /auth/token/ with
    email + password returns {refresh, access}no OAuth client_id
    needed
    (that was the earlier blocker). Email/password renewal is tried
    first; the OAuth refresh grant remains as a fallback.
  • SECTORS_ACCOUNT_EMAIL / SECTORS_ACCOUNT_PASSWORD are passed through
    compose; tokens resolve runtime-settings-first, then env.
  • The manual "paste tokens" modal was dropped — unnecessary now.

Configure

SECTORS_ACCOUNT_EMAIL=you@example.com
SECTORS_ACCOUNT_PASSWORD=…

With these set, the account card self-heals when the access token expires.
Endpoint and rationale documented in references/sectors-account-usage.md.

Backend 406 tests, frontend production build — green. (naragate-mcp unchanged.)

Naragate v0.4.0 — Market enrichment & bilingual results

Choose a tag to compare

@masdevid masdevid released this 15 Sep 09:10

Market enrichment & bilingual results

Expands the evidence engine with five more Sectors endpoints and makes the
result page fully bilingual.

New evidence (all cache-first — 0 credits on a warm graph)

  • Foreign flow (/v2/foreign-flow) and broker summary (/v2/broker-summary) → flow_summary (net + bias)
  • Top movers (/v2/companies/top-changes) → market-wide, day-keyed cache, market_movers (rank + classification)
  • Revenue segments (/v2/company/get-segments) → FundamentalEvidence.segments
  • Index daily (/v2/index-daily/IHSG) → relative_strength (beta-adjusted stock return, 90-day epoch cache)

Scoring

market_momentum_gap now combines a bounded flow adjustment (±10), mover
membership (±5), and the index-relative move (replaces the raw 1d move when
available), so a stock that lags IHSG is scored as underperformance.

Bilingual

  • contradictions_i18n — contradictions now carry ID + EN and the verdict
    narrative/explanation pick the active language (previously English-only on
    the Indonesian page)
  • filings.summary_en added
  • New "propped up by flow despite underperformance" note, bilingual
  • Results page renders foreign/broker flow, relative strength, and top segment

Docs & parity

  • Corrected endpoint paths in references/ENDPOINTS.md (real API schema)
  • REST + MCP parity for all five new endpoints; naragate-mcp0.4.0

Backend 398 tests, MCP 17 tests, frontend production build — all green.

Naragate v0.3.0 — MCP for any agent surface

Choose a tag to compare

@masdevid masdevid released this 15 Sep 04:15

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.

Naragate v0.2.0

Choose a tag to compare

@masdevid masdevid released this 10 Sep 10:29
6209429

Policy Amplifier + dashboard scanner.

Backend (#9, T1-T7)

  • T1 pre-check: policy→price signal validation across 5 curated tickers (cached-only GET /api/v1/precheck, zero-cost re-runs via epoch chunk cache, ?refresh=true opt-in)
  • 5 verified policy events (BBM 2025-10-01, HBA 2025-12-01, APBN subsidy 2026-01-22, Q2-26 tariff window, DMO cap 2026-06-22)
  • Sector resolver, sector evidence, policy event labeling, re-score trigger, retrospective case study tooling

Frontend (#10)

  • Single/Bulk scan toggle + 12 curated narrative tiles
  • Policy pre-check results panel with verdict chip, beacon table, and verified policy-event list

Naragate v0.1.0

Choose a tag to compare

@masdevid masdevid released this 07 Sep 15:35

Initial release of Naragate — an AI evidence engine that detects financial claims in Indonesian market narratives and verifies them against Sectors v2 financial data.

Features

  • Claim Parser — LLM extraction of structured claims (ticker, assertion, category, direction, confidence) from Indonesian narratives
  • Evidence Agents — valuation, fundamental, market, news, corporate actions, and insider-trading filings evidence via the Sectors v2 API
  • Skeptic Agent — challenges claims with negation bias
  • Evidence Judge & Score Generator — Reality Gap score (0–100) with verdict, including insider-bias-gap scoring and contradiction detection
  • SSE streaming pipeline — live claim → evidence → skeptic → judge → score events
  • Angular frontend — dashboard, claim analysis, results, history, settings, usage pages; responsive nav with mobile hamburger menu; EN/ID i18n
  • Sectors v2 integration — caching, credit-budget tracking, graceful degradation, partially-masked API key input (first/last 2 chars visible)
  • Docker Compose deployment with loopback-bound ports

Quality

  • 145 backend tests passing (parser, evidence agents, judge, pipeline, API, sectors client, filings agent)
  • Multi-agent skills packaged under skills/ and agents/