Skip to content

v7.1.3

Choose a tag to compare

@bdombro bdombro released this 29 Sep 10:39
· 7 commits to main since this release

[7.1.3] - 2026-09-29

Added

  • MCP tools whose inputSchema or outputSchema root is not type: "object" (e.g. a discriminated-union anyOf from export type Input = A | B) are now wrapped for MCP as { input: <schema> } / { result: <schema> }, with definitions moved to the new root. MCP requires an object root, and the TypeScript SDK rejects anything else; previously these tools shipped schemas clients refused or showed no fields for. tools/call unwraps input before invoke (handlers and inputSchema validation still see the exact union) and wraps structuredContent under result to match. CLI and HTTP are unchanged. See docs/mcp.md.
  • Startup validation (MCP enabled only): every exposed MCP tool's served schemas must have resolvable local $refs, and wrapped schemas must not use $ref: "#".
  • full-example-json gains a shape-area union-input leaf demonstrating the MCP wrap.
  • argsbarg create drops template lines marked # argsbarg-dev-only from new projects. The in-repo examples use it for the just setup step that repairs node_modules/.bin/argsbarg for file:../.. installs (now in all three templates); scaffolded projects never see it.

Changed

  • Docs now use bun x instead of bunx, and create examples use bun x argsbarg@latest create so scaffolding never runs a stale cached argsbarg (old templates, old ^ version in package.json). create --check examples keep bun x argsbarg so they check against the project's installed version.
  • The MCP plugin example now defaults to source-only Bun startup with inline Claude and Cursor MCP configuration, updated plugin recipes, unit/integration/agent-E2E guidance, and an optional Node distribution guide.

Fixed

  • schemagen now hoists a root $ref (from export type Input = Inner, generic aliases like Box<string>, or alias chains) to the object definition it names. Previously these roots had no type: "object" or properties, so MCP rejected the tool schema, --help showed no input rows, and Json-option/properties checks were skipped.
  • schemagen no longer adds additionalProperties: false to non-object roots. On a union root it rejected every property, so union-typed inputs never validated.
  • JSON Pointer $ref resolution (discriminated-union error reporting, OpenAPI dereferencing) now decodes percent-escaped segments such as #/definitions/Box%3Cstring%3E.
  • The full-example and full-example-json justfiles derive tap_parent/tap_path from a literal tap := "org/repo" instead of raw {tapOrg}/{tapRepo} placeholders, which only create filled in. Run in-repo, the Homebrew recipes targeted Taps/{tapOrg}/homebrew-{tapRepo}, and create --check reported drift. A new test runs create --check on every in-repo template as part of just test.
  • The MCP plugin example's release --dry-run now prints the planned actions without running checks, changing files, or publishing.