Skip to content

DRAFT: wire tool annotations + structured output (needs upstream MCP.jl release)#13

Draft
samtalki wants to merge 1 commit into
mainfrom
feat/mcp-tool-metadata
Draft

DRAFT: wire tool annotations + structured output (needs upstream MCP.jl release)#13
samtalki wants to merge 1 commit into
mainfrom
feat/mcp-tool-metadata

Conversation

@samtalki

@samtalki samtalki commented Jun 6, 2026

Copy link
Copy Markdown
Owner

Draft — do not merge yet. Depends on two unreleased ModelContextProtocol.jl features (tool annotations + structured output). Stacked on #12.

What this shows

With the framework features available, AgentREPL's tools gain:

  • Annotations on all 8 tools — inforeadOnlyHint+idempotentHint; reset/pkg/sessiondestructiveHint; evaldestructiveHint+openWorldHint; activate/reviseidempotentHint. Lets Claude Code reason about side effects / auto-approval.
  • Structured output on info and session(list)outputSchema on the tool + structuredContent in the result, so the client gets machine-readable data instead of scraping text. Freeform tools (eval) stay text-only.
  • E2E assertions for all three (313 tests pass against the fork).

Verified live over raw JSON-RPC: every tool carries annotations; info/session carry outputSchema; info returns structuredContent (session, julia_version, worker_pid, variables, …).

Why it can't merge

Project.toml [sources] pins ModelContextProtocol to the fork branch feat/structured-output (v0.5.0) and [compat] is widened to "0.4, 0.5". That pin must not reach main.

Unblock: when the upstream PRs land in a release, drop the [sources] block and set a normal [compat] bound. Upstream changes live on samtalki/ModelContextProtocol.jl branches feat/tool-annotations and feat/structured-output (not yet proposed to JuliaSMLM).

🤖 Generated with Claude Code

@samtalki samtalki force-pushed the feat/mcp-tool-metadata branch from 6a64bf3 to 018fb7d Compare June 7, 2026 04:11
@samtalki samtalki changed the base branch from feat/malt-worker-backend to main June 7, 2026 04:11
Rebased onto main (post-review). Uses the forked ModelContextProtocol.jl features
so Claude Code gets behavioral hints and machine-readable tool results.

- annotations on all eight tools: info -> readOnly+idempotent; reset/pkg/session ->
  destructive; eval -> destructive+openWorld; activate/revise -> idempotent.
- output_schema + structured_content on info and session(list) as exemplars.
- E2E assertions for annotations, outputSchema, structuredContent.

DRAFT, not mergeable: Project.toml [sources] pins ModelContextProtocol to the fork
branch (feat/structured-output, v0.5.0), [compat] widened to "0.4, 0.5". When the
upstream PRs land in a release, drop [sources] and restore a normal [compat] bound.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@samtalki samtalki force-pushed the feat/mcp-tool-metadata branch from 018fb7d to 74c25d3 Compare June 7, 2026 04:16
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