Skip to content

Expose MaxCharacterCount as a WolframLanguageEvaluator tool option#208

Open
basnijholt wants to merge 1 commit into
WolframResearch:mainfrom
basnijholt:expose-evaluator-max-character-count
Open

Expose MaxCharacterCount as a WolframLanguageEvaluator tool option#208
basnijholt wants to merge 1 commit into
WolframResearch:mainfrom
basnijholt:expose-evaluator-max-character-count

Conversation

@basnijholt

Copy link
Copy Markdown

Problem

WolframLanguageEvaluator hard-codes "MaxCharacterCount" -> 10000 at both WolframLanguageToolEvaluate call sites, so every tool result is truncated at ~10 kB with no way to configure it. (There's an adjacent FIXME: Expose this as an option in the file.)

This particularly hurts image/plot workflows in headless MCP deployments: a rasterized plot returned as base64 blows through 10 kB immediately, forcing agents into awkward workarounds (chunking base64 across many evaluations and reassembling client-side). Most modern agent harnesses already handle large tool outputs themselves (spilling to files, summarizing, or capping in the client), so a hard server-side 10k limit mostly gets in the way.

Change

Wire MaxCharacterCount through the existing tool-options mechanism, following the same pattern as Method / TimeConstraint / MaxSessionCount:

  • $maxCharacterCount := toolOptionValue[ "WolframLanguageEvaluator", "MaxCharacterCount" ]
  • "MaxCharacterCount" -> 10000 added to $defaultToolOptions[ "WolframLanguageEvaluator" ]default behavior is unchanged
  • both call sites now pass $maxCharacterCount

Users can then raise (or lower) the cap via the standard "ToolOptions" plumbing, e.g.:

InstallMCPServer[
    "ClaudeCode",
    "WolframLanguage",
    "ToolOptions" -> <| "WolframLanguageEvaluator" -> <| "MaxCharacterCount" -> 100000 |> |>
]

Tests

  • Extended DefaultToolOptions-WolframLanguageEvaluator with the new default.
  • Added ToolOptionValue-FallbackToDefault-MaxCharacterCount and ToolOptionValue-UserOverride-MaxCharacterCount, following the existing Method/TimeConstraint tests. (TestID location suffixes left to Scripts/FormatFiles.wls per docs/testing.md.)

Manually verified against a licensed Wolfram Engine via PacletDirectoryLoad: default unchanged (10000); with $toolOptions overriding to 50000, StringRepeat["a", 60000] returns ~50k characters instead of truncating at 10k.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant