Skip to content

26.7.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 23:49

26.7.0 — engine 26.6.0 + shared descriptive-error contract across all tools

What changed

  • Bumped the GroupDocs.Conversion engine from 26.3.0 → 26.6.0. Engine 26.6.0 introduces a dedicated net10.0 runtime sub-package (GroupDocs.Conversion.Net100) that the MCP's net10.0 target now resolves directly (previously net10.0 fell back to the net8.0 runtime). SkiaSharp pin is unchanged at 3.119.2 (the version Net100 transitively declares).
  • Bumped the MCP package version 26.5.2 → 26.7.0 (CalVer).
  • Extracted a shared Tools/ToolError.cs (ToolError.Format(op, file, ex, subjectSuffix = null)) and routed every tool's failure path through it. ConvertTool previously carried a private FormatException helper; GetDocumentInfoTool and GetSupportedFormatsTool had no exception handling at all — an engine failure in either (e.g. a missing native dependency on Linux, or a malformed document) bubbled up to ModelContextProtocol.Server's generic An error occurred invoking '<tool>'. wrapper, discarding the cause.
  • All three tools now catch engine exceptions and return a descriptive string that starts with "<op> failed for '<file>'[ <suffix>]: <ExceptionType>: <message> | inner(0): …":
    • ConvertConversion failed for '<input>' -> <ext>: …
    • GetDocumentInfoDocument-info lookup failed for '<input>': …
    • GetSupportedFormatsSupported-formats lookup failed for '<input>': …

Why

ConvertTool already surfaced engine exceptions (26.5.2), but the two read-only inspection tools did not — a native-deps regression that broke get_document_info / get_supported_formats on Linux would have looked identical to any other failure from the client's perspective. Consolidating the formatter removes the duplicated helper and gives the whole tool surface one consistent, testable error prefix.

Migration / impact

  • Tool callers: isError is false even on engine failure for all three tools now; the cause surfaces in the response text. Detectors should substring-match the per-tool prefix ("Conversion failed for", "Document-info lookup failed for", "Supported-formats lookup failed for").
  • File-not-found behaviour is unchanged — the resolver runs before the try/catch, exactly as in ConvertTool.
  • Successful calls: identical output to 26.5.2. No wire-name or schema changes; the tool surface is still the same three tools.

Full Changelog: 26.5.2...26.7.0