Revision history for MCP::Server::Tool::Ask

0.1.3  2026-10-24T18:50:11+01:00
    - [2026-09-28] Requires JSON::Fast 0.21.0 or later (zef:timo). 0.19
      (cpan:TIMOTIMO) fails its own tests under the RakuAST compiler
      frontend that Rakudo 2026.09 makes the default, so installing this
      distribution stopped at that dependency.
    - [2026-09-19] audited what user_ask publishes about its own arguments
      against what its handler does with them, and added
      t/05-schema-contract.rakutest to keep the two together: "message" is in
      the schema's required array and calling without it is refused before
      anybody is asked anything, and neither parameter publishes a JSON Schema
      default, because omitting "questions" is not a value being substituted
      but a different question altogether -- one free-form field instead of a
      form. No library code changed.
    - MAINT: [2026-08-27] moved the shared test fixtures from
      C<t/lib/AskTest.rakumod> into
      C<lib/MCP/Server/Tool/Ask/Test/Kit.rakumod>
      (C<MCP::Server::Tool::Ask::Test::Kit>). A C<t/lib> directory is
      its own CompUnit repo that starts cold on a fresh C<zef
      install>, and parallel test files pulling the fixture's
      dependency chain into that cold store can race and fail the
      install outright. C<lib/> is staged and precompiled before the
      test phase runs, so shipping test support inside the dist's own
      namespace dissolves the race. This is the fleet-wide convention
      going forward.

0.1.2  2026-08-21T21:44:46+01:00
    - Pin MCP::Server version.

0.1.1  2026-08-21T21:43:41+01:00
    - Documented why this pack declares NO MCP annotations: "ask" writes
      nothing, so calling it read-only would be defensible -- and a host reads
      that as permission to run two of them at once, which is the last thing a
      tool that parks the call on a human wants. It is not idempotent either:
      asking the same question twice asks a person twice.

0.1.0  2026-08-09T19:58:41+01:00
    - Initial release
    - MCP::Server::Tool::Ask: a toolkit that lets a model ask the human on the
      other end of the MCP client a question, built on MCP::Server's
      server-side elicitation (the 2026-07-28 multi round-trip request
      pattern). Plugs into any MCP::Server via $server.plug($kit) or
      MCP::Server.new(:tools['Ask']).
    - One tool (default prefix "user"): ask. It takes a message and an optional
      list of questions -- each with a name, a prompt, an optional type
      (string, number or boolean), optional options that become an enum, and an
      optional required flag -- and renders them as one elicitation form.
      With no questions it asks for a single free-form "answer".
    - An accepted form comes back as JSON with sorted keys. A decline or a
      cancel comes back as plain text and never as an error: a user refusing to
      answer is the system working, and a model that sees isError will retry.
