Patch release after v0.4.4.
1. Rich openapi.json (spec §11.3)
- Fixed: fields with no explicit http: location were dropped from the
generated parameters (the generator skipped Location=="" while the binder
treats it as query). Every path/query/header field is now emitted with its
wire name, location, required (path params always), description (the
field's desc) and a rich schema (type + enum/default/format/items, reused
from the same InputSchema the MCP tools use) instead of a bare type.
- Operations carry a description (the command description) alongside the
summary; one operation per registered method; requestBody for
POST/PUT/PATCH; info.title/version come from the application identity
(X-App-Name/X-App-Version) instead of the hardcoded "example service"/"1".
2. GET + POST by default (spec §11.1)
- A command with an HTTP path and no method registers BOTH GET and POST
(GET binds query, POST binds body+query, same handler). Method accepts a
single method or a comma-separated list ("GET,POST,PUT"). Routing
condition relaxed from "Method && Path" to "Path".
3. Enriched MCP tool metadata (spec §12.4)
- MCPHints gains Title (→ annotations.title), Description (overrides the
summary+description merge) and Meta (per-tool _meta); MCPFieldHint gains
Description (per-field inputSchema description override, applied via
effectiveDescription). Everything still defaults from the shared tags, so
the common case stays zero-config and each piece is independently
overridable.
Tests: httpapi/openapi (rich params/description/info, GET+POST default, method
list), mcp/tool (enrichment + overrides + defaults). Full suite green;
nocli/nohttp/nomcp + all-trim variants build; vet clean.