Skip to main content

Changelog

Notable changes to the Zihin API.

2026-07-02 — MCP Skills + @zihin/mcp-server 1.4.0

Added — Skills (6 expert playbooks)

  • 6 skills served by the MCP Server as resources zihin://skills/{slug} (total resources: 13 → 19): mcp (router), criar-agente, tools-de-agente, triggers-e-canais, diagnostico, governanca-e-operacao. Skills encode multi-tool workflows, decision trees and silent-failure gotchas — the server's instructions direct the model to read the relevant skill before multi-step flows (zero-install in any MCP client).

Added — npm package @zihin/mcp-server 1.4.0

  • install-skills subcommand: installs the skills in each IDE's native format — --client claude|cursor|windsurf|codex|all, --dir, --global (claude), --bundled (offline). Fetches from the live server by default (always current).
  • Claude Code plugin: claude plugin marketplace add zihin-ai/zihin-mcp + claude plugin install zihin@zihin — MCP server + skills in one command.

2026-07-01 — MCP Server v2.4.0

Added — MCP Tools (13 new, total now 96)

  • Budget (OE-1): get_agent_budget, list_agent_budgets (read), set_agent_budget (write) — per-agent USD spend cap, counts every LLM call including BYOK
  • Approvals — HITL: list_approvals, list_approval_policies, get_approval_policy (read), create_approval_policy, update_approval_policy (write)
  • Observability: get_agent_lineage, get_tenant_health, get_execution_trace, get_session_agent_tree — aggregated in SQL, no row caps
  • Consumer Profile: list_consumer_sessions — sessions of a specific consumer, cross-agent
  • update_agent now accepts chat_enabled (native chat channel gate)
  • list_agent_sessions new filters: control_mode, consumer_key, roots_only

Added — Formal contracts and client UX

  • 10 new resources zihin://schemas/{type} — the exact JSON Schema the server validates with (Ajv), plus an mcp_usage field explaining granularity (schema_data payloads vs full entities with server-injected fields)
  • ToolAnnotations on all 96 tools (read-only/destructive/idempotent/open-world hints + titles) — clients can auto-approve reads and confirm destructive calls
  • Role-aware server instructions sent on initialize (workflows, critical rules, contract-first flow)

Changed

  • RBAC hardening: tool registration is now filtered by role — editor no longer sees write tools in tools/list; write guards derive from a single category registry (previously 5 write tools lacked a call-time guard: toggle_schema, test_trigger, refresh_connection_schema, test_mcp_server, delete_agent_memory)
  • ZIHIN_ROLE (stdio) is now downgrade-only — it can no longer escalate above the API Key's role
  • get_agent_metrics aggregates LLM metrics in SQL (fixes silent undercount past ~1000 rows) and adds errors, success_rate, latency_p50_ms/latency_p95_ms, last_call_at; tool usage is sampled with an explicit sample_truncated flag
  • MCP role counts: admin/owner 83 → 96, editor 42 → 52, member 5 (unchanged)

Removed

  • Legacy schema types knowledge and policy removed from create_schema/update_schema enums and from zihin://schema-templates (no production usage; superseded by canonical types)

2026-05-29 — Session Control Lifecycle

Added — Session Control endpoints

  • POST /api/v1/sessions/:id/suspend — pause the agent on a specific session
  • POST /api/v1/sessions/:id/resume — resume the agent (control_mode='engaged')
  • POST /api/v1/sessions/:id/handoff — mark control_mode='manual_handoff'
  • POST /api/v1/sessions/:id/cancel — abort an in-progress turn (mid-LLM, mid-tool)
  • POST /api/v1/sessions/:id/manual-message — operator sends a message through the agent's outbound channel; supports Idempotency-Key header
  • GET /api/v1/sessions — new filters: control_mode, consumer_key
  • Session detail payload now includes control_mode and control_metadata

Added — Consumers endpoints

  • GET /api/v1/consumers — paginated list of cross-session consumers (filters: search, blocked)
  • GET /api/v1/consumers/:key — aggregated profile (channels, total sessions, total turns)
  • GET /api/v1/consumers/:key/sessions — sessions associated with a consumer
  • POST /api/v1/consumers/:key/deny — add to tenant-wide denylist (telemetry:write)
  • DELETE /api/v1/consumers/:key/deny — remove from denylist

Added — MCP Tools (5 new, total now 83)

  • Consumer Profile (owner, admin, editor): get_consumer_profile, list_consumers
  • Consumer Ops (owner, admin): set_consumer_denylist, set_session_control, send_manual_message, cancel_agent_turn

Changed

  • MCP role counts: admin/owner 76 → 83, editor 39 → 42, member 5 (unchanged)
  • Webhook responses use empty TwiML (<Response></Response>) when a gate blocks (denylist, suspended session). No LLM call, no quota consumed.

Workroom Realtime Events (new)

Tenant-scoped events emitted on the workroom:{tenantId} channel:

  • session_control_changed — when control_mode changes (suspend/resume/handoff/auto-expire)
  • consumer_denylist_changed — when a consumer is added or removed from the denylist
  • manual_message_sent — when an operator sends a manual message
  • turn_cancelled — when an agent turn is cancelled

Error Codes (new)

  • INVALID_SESSION_STATE (409) — manual-message attempted while control_mode='engaged'
  • NO_TRIGGER_HISTORY (422) — manual-message on a session with no prior webhook history
  • NO_CALLBACK_CONFIG (422) — manual-message on a trigger without an outbound callback configured
  • DELIVERY_FAILED (502) — outbound channel (e.g., Twilio) returned an error

2026-02-17

Added

  • Public documentation portal at docs.zihin.ai
  • Auto-synced docs from service repositories
  • N8N integration nodes documentation
  • Zihin Watch observability documentation

Infrastructure

  • Docs pipeline: each service repo owns its public docs
  • Automated sync on every build

For feature requests and bug reports, contact the Zihin team or open an issue in the relevant repository.