Skip to main content
Version: 1.1

Version 1.1.0 Release Notes

Package version: 1.1.0

Release date: 2026-08-13

CrestApps.Core 1.1.0 was released on 2026-08-13.

Highlights

  • upgrades the framework's dependency baseline, including YesSql 6.0 (new ISession.SaveAsync signature), the Model Context Protocol 2.0 packages, the GitHub Copilot SDK 1.0.8 (new PermissionsApi.SetAllowAllAsync mode-based API), Anthropic 12.39.0, OllamaSharp 5.4.30, the .NET 10.0.10 runtime/extension packages, and the Microsoft.Extensions.AI 10.8.3 packages

Breaking Changes

  • MCP servers no longer expose tools by default. In 1.0.0 a server registered with WithCrestAppsHandlers() listed and invoked registered tools by default. In 1.1.0 tool exposure is opt-in through the new McpServerOptions site settings: nothing is listed or callable until you either add the tool or tool instance name to McpServerOptions.Tools or set McpServerOptions.ExposeAllTools to true. Hosts upgrading from 1.0.0 that relied on the previous "expose everything" behavior must set ExposeAllTools = true (or populate Tools) to keep exposing their tools. Prompts and resources are unaffected and are still always registered

MCP server tool exposure

  • reworks tool exposure into an opt-in allow-list driven by the McpServerOptions site settings. Nothing is exposed by default: an MCP server lists and invokes only the tools and configured tool instances named in McpServerOptions.Tools, or every tool and instance when McpServerOptions.ExposeAllTools is true. Only selectable tools participate: system tools (marked IsSystemTool) and hidden tools are never exposed, even when ExposeAllTools is true. The allow-list is enforced by both the list and call handlers, so a tool that is not exposed can neither be discovered nor invoked. Because McpServerOptions is backed by site settings, operators choose which tools to expose from the admin settings UI without redeploying. The MVC and Blazor sample hosts add an "Exposed tools" editor to their MCP server settings

Documentation search tool instances

  • adds documentation search tool instance sources, so a host exposes one callable search function per documentation site it configures. These are ordinary tool instance sources registered on the tool instances builder with AddDocumentationSearchSources() (or the individual AddSitemapDocumentationSource(), AddSearchIndexDocumentationSource(), and AddAlgoliaDocumentationSource() methods), so they can be used with or without the MCP server. Each configured instance binds one site and surfaces as a distinct function the AI model can call, and the instances are managed and persisted through the existing tool instance store (YesSql or Entity Framework Core) and UI. The MVC and Blazor sample-host tool instance editors add source-specific field groups so operators can configure a documentation site (base URL, sitemap or index URL, Algolia application/index/search-only key, and per-instance result limits) directly from the create and edit forms
  • ships three documentation search strategies, each as its own source and settings model: the sitemap source crawls a site through its sitemap.xml (for example a public Docusaurus site such as core.crestapps.com), the search-index source downloads a prebuilt JSON search index (for example a MkDocs Material search_index.json) and ranks it locally, and the Algolia source forwards queries to the hosted Algolia DocSearch API. A singleton materializer caches the crawled corpus or downloaded index per instance and rebuilds it only when the instance changes, so the corpus is reused across calls
  • exposes documentation search functions through the MCP server the same way as any other tool instance: add the instance name to McpServerOptions.Tools (or enable ExposeAllTools) to make it discoverable and callable

Fixes

  • stops the MCP server from exposing system tools. WithCrestAppsHandlers() now lists and invokes only selectable tools, so tools marked IsSystemTool (which agents auto-include based on context) are never discoverable or callable over MCP, even when McpServerOptions.ExposeAllTools is true
  • makes the MCP tool allow-list respond to site-settings changes at runtime. The list and call handlers now read McpServerOptions through IOptionsMonitor instead of the cached IOptions, so exposing or removing a tool from the admin settings page takes effect without restarting the host
  • lets an MCP client invoke a code tool advertised under a function name that differs from its registration key. The call handler resolves the tool by the published function name (mirroring the list handler) so a listed tool can always be called
  • rethrows cancellation from the documentation search function instead of reporting it as a successful error result, and returns a stable, non-leaking failure message for other errors
  • updates the MVC and Blazor sample hosts to load @crestapps/bootstrap-select 1.2.3 for Bootstrap select styling
  • protects Algolia DocSearch API keys for documentation search tool instances before persisting them, keeps existing keys when the edit form is saved with the key field blank, and unprotects the key only when the Algolia source is materialized for a search
  • fixes post-session processing endlessly retrying and eventually failing when the AI returned a successful (HTTP 200) response that could not be parsed into structured task results. The no-tools structured output path now records a Failed result with a diagnostic message instead of silently returning no result, so these responses no longer exhaust all retry attempts. The unparseable-response case is now logged at Warning (including a preview of the raw AI response) instead of only at Debug, and the recorded task error message now explains that the AI produced no parseable result or there was no content to evaluate.
  • avoids issuing a post-session AI request when there is no meaningful user content to evaluate. Sessions whose user prompts are empty, whitespace-only, or system-generated are skipped, so a real AI call is only made when there is something to analyze.