Skip to content

v0.8.3

Choose a tag to compare

@crumplecup crumplecup released this 02 Mar 05:33
· 922 commits to main since this release

v0.8.3

elicit_newtype! / reflect_methods! — newtype wrappers with MCP tool generation

Two new declarative macros make it practical to expose third-party crate types as MCP tools:

elicit_reqwest is the reference implementation: reqwest's core types are wrapped via these macros, producing 81 MCP tools across 7 plugins. A WorkflowPlugin adds 10 phrase-level compositions that chain those tools into verified HTTP workflows.

Anodized TypeSpec explorer — phases 1–4

Agents working with richly-typed APIs previously had to receive the full spec surface in their prompt. The TypeSpec explorer lets them pull exactly what they need:

  • ElicitSpec trait attaches structured metadata (summary, preconditions, postconditions, type bounds, enum variants) to any type
  • #[derive(Elicit) composes a type's ElicitSpec from field- and variant-level annotations (#[spec_summary], #[spec_requires], #[spec_ensures]), so the spec stays colocated with the type definition
  • TypeSpecPlugin MCP tools (describe_type, get_requires, get_ensures, get_bounds, …) expose the spec as on-demand queries rather than a context dump
  • Coverage spans std primitives, time::OffsetDateTime, url::Url, reqwest::StatusCode, and elicitation's own contract types

Documentation

Added READMEs for elicit_reqwest, elicitation_creusot, elicitation_kani, elicitation_verus, and elicitation_macros. Each crate now has its own Cargo.toml metadata (description, keywords, categories, readme pointer).

Other

  • elicitation_verus updated to Verus nightly 2026-03-01
  • derive-new bumped to 0.7
  • CI fixes in elicit_spec_derive tests (dead-code lints, map_oris_some_and)