Skip to content

v0.7.0 — Packs as MCP tools, deterministic mock cost accounting, CI eval gate

Latest

Choose a tag to compare

@Brescou Brescou released this 16 Jul 11:35
8e1ae7c

Feature release — the headline: every domain pack is now callable as an MCP tool.

Added

  • MCP server (#92) — opt-in streamable-HTTP endpoint at /mcp (MCP_SERVER_ENABLED=true, uv sync --extra mcp). One MCP tool is auto-generated per registered pack from its Pydantic schemas — Claude Desktop, Cursor, or any MCP client can call meeting_prep, summariser, support_triage, … directly. Every call flows through the same kernel as the REST routes: auth, rate limiting, per-run USD budgets, compliance gating. Regulated packs stay out of the tool list while gated off.

Fixed

  • Consistent cost_usd in mock mode (#88) — typed pack routes returned null while the legacy pipeline returned 0.0. The mock provider now emits deterministic token usage through the real CostTracker, so every route reports 0.0 — and budget enforcement (HTTP 402) is now testable end-to-end without an API key via a cost-table override.
  • Vector store hardening (#90) — every RAG backend now receives an explicit embeddings instance from the new core/embeddings.py factory (EMBEDDING_PROVIDER, deterministic and keyless in mock). PGVector migrated to the maintained langchain_postgres.PGVector.

CI

  • Full-stub type checking (#96) — pyright now runs with all extras installed, so provider-specific code is checked against real types.
  • Eval regression gate (#102) — mock-mode pack evals run on every PR against per-pack pass_rate thresholds (evals/thresholds.yaml). Structural regressions can no longer reach main.

Full Changelog: v0.6.2...v0.7.0