You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix(server): fix streamable-http ASGI error, host binding, and AdCP 3.0.1 scenario gaps
Closes#295
serve() and create_mcp_server() now default stateless_http=True, which
sets FastMCP's stateless_http+json_response flags. The streaming-SSE
default caused "ASGI callable returned without completing response" and
made examples/seller_agent.py report overall_status: "unreachable" to
the AdCP storyboard runner. Expose host kwarg (ADCP_HOST env → 0.0.0.0
default) so container deployments (Fly.io, k8s, Cloud Run) bind the
external interface instead of loopback.
Add five AdCP 3.0.1 seed_* scenarios (seed_product, seed_pricing_option,
seed_creative, seed_plan, seed_media_buy) to SCENARIOS, TestControllerStore
stubs, _handle_test_controller dispatch, and both inputSchema locations.
Add account field to comply_test_controller schema so runner detection
works. Emit a WARNING log from capabilities_response() when compliance_
testing is declared without idempotency, surfacing the v2-mode downgrade.
https://claude.ai/code/session_01RJtJkQ8rooA7monEAB6ZVd
* refactor(server): rename stateless_http to streaming_responses
The FastMCP-internal flag name ``stateless_http`` reads like "disable
streamable-http" to a docstring-skimmer, but actually controls one
mode within the streamable-http transport (synchronous JSON response
vs. SSE-streamed response). Rename the SDK parameter to
``streaming_responses`` and flip the polarity so ``True`` means
"enable streaming" rather than "disable a feature".
Default is now ``False`` (one JSON response per request) which matches
what AdCP tools actually emit today — none of them produce progress
events. The FastMCP SSE-internal mode also has an upstream bug that
drops the ASGI response, blocking the storyboard runner; the new
default sidesteps that. Set ``streaming_responses=True`` if/when AdCP
adds genuinely streamed tools.
Internal call to ``mcp.settings.stateless_http = True`` is kept (that's
FastMCP's own setting name; we negate our parameter at the boundary).
Acting on user feedback that ``stateless_http=True`` was a confusing
name for the flag's user-visible behavior.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments