Skip to content

v0.10.1 — MCP lifecycle hardening, dispatch-only tool sources, compose spec caching

Choose a tag to compare

@danielkov danielkov released this 13 Jul 22:03
· 35 commits to main since this release
9fda8b3

v0.10.1 — MCP lifecycle hardening, dispatch-only tool sources, compose spec caching

Patch release hardening the MCP server lifecycle around error paths, adding a dispatch-only catalog wrapper, and caching the compose tool's rendered spec.

What's Changed

Unadvertised source wrapper (agentkit-tools-core)

Dispatch-only catalogs: specs() is empty, get() passes through, inner catalog events are drained but not forwarded. Fills the gap between Filtered (hides dispatch too) and fully advertised sources — compose children the model should invoke through scripts without seeing individually.

MCP lifecycle hardening (agentkit-mcp)

  • disconnect_server now unregisters tools and emits ServerDisconnected even when close() fails — previously a close failure left stale, still-callable adapters in the catalog with no retry path.
  • New unregister_server API fully removes a server (config, options, auth) so detached servers stop accreting and cannot be resurrected by bulk connects.
  • New connect_servers_settled settles a chosen subset in parallel, idempotent per server; connect_all_settled delegates to it and no longer re-handshakes live servers.
  • Replaced connections are closed on overwrite instead of silently dropped (leaked Streamable HTTP sessions).
  • IO/transport/timeout call failures map to ToolError::Unavailable so callers can trigger reconnects without string-matching; request-side JSON-RPC errors (InvalidParams/InvalidRequest/ParseError) map to ToolError::InvalidInput so the model is told to fix its arguments instead of treating the tool as broken.
  • McpServerHandle::tool_names() lists namespaced names without building adapters.

Compose spec caching (agentkit-tool-compose)

specs() re-rendered every child's output schema into the compose description on each call — once per model step — even for frozen catalogs. The rendered spec is now cached and invalidated on drain_catalog_events, the same signal the loop uses to refresh the model-visible catalog.

Snapshot canonicalisation

JSON object keys are sorted during recording normalisation, fixing deterministic and flaky snapshot mismatches introduced by workspace-wide preserve_order.

Commits

  • fix: MCP lifecycle hardening, dispatch-only tool sources, compose spec caching (0.10.1) (#9) (9fda8b3)

Full Changelog: v0.10.0...v0.10.1