Release covering all changes since v0.2.1 (0.3.0–0.3.3 were developed but never tagged).
0.3.3
Fixed
- Strip path parameters from non-GET request bodies (was GET-only). Substituted
{path}placeholders were left inparametersfor POST/PUT/PATCH/DELETE and leaked
into the JSON body, so strict APIs returned 400 — e.g. Home Assistant
POST /api/services/{domain}/{service}rejected the body carryingdomain/service.
Now stripped for all methods. Regression test added.
Added
- Home Assistant example (
examples/homeassistant.openapi.json+
examples/homeassistant-claude_desktop_config.json): generic REST slice
(get_config, list_states, get_state, list_services, call_service, get_history) with
namedcall_servicebody args. Auth viaEXTRA_HEADERS="Authorization: Bearer ${HA_TOKEN}"
andSERVER_URL_OVERRIDE. Requires this release's fix forcall_service.
0.3.2
Fixed
- FastMCP / simple mode (
OPENAPI_SIMPLE_MODE=true) advertised the prompts and
resources capabilities but served empty lists. It now serves native MCP prompts
(summarize_spec,whimsical_blog) and thespec_fileresource — at parity with the
low-level server. (Tools, prompts, resources all work in both modes now.) - FastMCP spec-serialization paths now use
default=str, so specs with YAML datetime
example values (e.g. the apis.guru directory spec) no longer crashresources/read
with "Object of type datetime is not JSON serializable".
Tests
- TDD: added simple-mode prompts/resources serve tests (not just advertise) and a
datetime-serialization regression test. Verified with a full permutation sweep —
both modes × {tools, prompts, resources} × {list, invoke} — all green.
0.3.1
Docs
- Client matrix re-verified against the published 0.3.0 release (no flags, default-on
advertising), driving every available real client binary. Filled the previously
"unknown" cells with evidence:- opencode surfaces tools + prompts + resources — the only client that does all three.
- Codex surfaces tools + resources (
read_mcp_resource); no prompt mechanism. - Kilocode tools + resources; Qwen tools + prompts (slash); Gemini tools
(prompts/resources interactive-only); Vibe tools-only. - Letta marked unknown — not testable headless (needs a running server + model).
- No code changes; README is the PyPI long-description, so the corrected matrix ships to devs.
0.3.0
Changed
- Prompts and resources are now advertised by default.
ENABLE_PROMPTSand
ENABLE_RESOURCESdefault totrue. Previously they defaulted tofalse, which —
per the MCP spec (a client won't callprompts/list/resources/listunless the
capability is advertised ininitialize) — made prompts and resources invisible to
every client at once, despite being implemented and served correctly. Opt out with
ENABLE_PROMPTS=false/ENABLE_RESOURCES=false.
Added
- Regression test asserting the default handshake (no env flags) advertises prompts
and resources, not just tools.
Docs
- Corrected the client matrix in
README.mdanddocs/verification-case-study.md.
Re-verified the real client binaries with advertising enabled: Qwen surfaces
prompts (slash commands), Kilocode surfaces resources (access_mcp_resource),
Gemini exposes prompts interactively only, Vibe is tools-only. All pre-fix
prompt/resource findings are voided (they were measured while advertising defaulted
off); Codex, opencode, and Letta are marked unknown pending re-test. Tool-call
results were unaffected and stand.