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
Sub-epic: the MCP rendering of WAVE Composer — wave_compose as a finished product surface, not just a merged tool.
POST https://api.wave.online/v1/compose takes a plain-language intent and returns a grounded proposal: which WAVE products to chain, in what order, at what live price. MCP is one of four renderings of that one engine (API, CLI, SDK, MCP), and it is the one an agent reaches for first — so its schema is the contract other agents read.
Today (receipt)
wave_compose: gateway-calling successor to wave.ask #127wave_compose: gateway-calling successor to wave.ask MERGED 2026-09-06T15:21:38Z (feat/wave-compose-tool). The tool exists and calls the gateway rather than composing locally.
The engine it calls is live. Probed unauthenticated this session: POST https://api.wave.online/v1/compose with no credentials returns 402 with an x402 payment challenge naming "resource": "/v1/compose". With a key holding composer:write it returns 200, carrying these keys: callShape, engine, executes, flowId, groundedAt, grounding, id, intent, manifestHash, next, priceRows, productIds, scopes, stages, tools.
GET https://api.wave.online/.well-known/wave-skills/composer.json returns 200 and declares auth.scope: "composer:write" and pricing.meter: "wave_compose_builds".
What is not done: the tool's declared output schema is not proven to match the live response key-for-key, there is no save-flow tool, no run/progress/artifact tools, no release cut carrying wave_compose, and no e2e in this repo's CI that calls the live gateway.
Done means (live proof)
(a) Compose live against the engine — wave_compose returns a proposal fetched from POST https://api.wave.online/v1/compose. Receipt: the merged PR (wave_compose: gateway-calling successor to wave.ask #127) plus a captured tool result showing live stages and priceRows.
(b) Save flow — an agent can persist a composed proposal through the authenticated bearer path and read it back by id, as a tool call.
(c) Run + progress + artifacts — tools exist to hand a proposal to a run, surface stage progress as it streams, and list the resulting artifacts.
(d) Tool schema and examples grounded on the LIVE response shape — the declared output schema names the keys the API actually returns (stages, priceRows, scopes, engine, executes, flowId, candidates). A test fails if the schema and a live response disagree in either direction.
(e) Release cut — a version bump plus a release-workflow run id as the receipt, and tools/list on the published server includes wave_compose.
(f) e2e vs the live gateway in this repo's CI — a test asserting 402 without a key and the 200 response shape with a key, green, with the run id recorded.
Owner
Lane builds it. Jake crossing: the merge to this public repo's default branch, and any release publish.
Depends on
The runner surface behind (c) is tracked on the API side; (a), (d), (e), (f) are independent and buildable now.
Layer
Actions — the MCP face of WAVE's Knowledge / Actions / Awareness triple.
Sub-epic: the MCP rendering of WAVE Composer —
wave_composeas a finished product surface, not just a merged tool.POST https://api.wave.online/v1/composetakes a plain-language intent and returns a grounded proposal: which WAVE products to chain, in what order, at what live price. MCP is one of four renderings of that one engine (API, CLI, SDK, MCP), and it is the one an agent reaches for first — so its schema is the contract other agents read.Today (receipt)
wave_compose: gateway-calling successor to wave.askMERGED 2026-09-06T15:21:38Z (feat/wave-compose-tool). The tool exists and calls the gateway rather than composing locally.fix(release): verify tools/list against capabilities.json, not a literal 18MERGED 2026-09-06T19:51:12Z — the release verify now counts tools from the manifest.POST https://api.wave.online/v1/composewith no credentials returns402with an x402 payment challenge naming"resource": "/v1/compose". With a key holdingcomposer:writeit returns200, carrying these keys:callShape, engine, executes, flowId, groundedAt, grounding, id, intent, manifestHash, next, priceRows, productIds, scopes, stages, tools.GET https://api.wave.online/.well-known/wave-skills/composer.jsonreturns200and declaresauth.scope: "composer:write"andpricing.meter: "wave_compose_builds".wave_compose, and no e2e in this repo's CI that calls the live gateway.Done means (live proof)
wave_composereturns a proposal fetched fromPOST https://api.wave.online/v1/compose. Receipt: the merged PR (wave_compose: gateway-calling successor to wave.ask #127) plus a captured tool result showing livestagesandpriceRows.stages,priceRows,scopes,engine,executes,flowId,candidates). A test fails if the schema and a live response disagree in either direction.tools/liston the published server includeswave_compose.Owner
Lane builds it. Jake crossing: the merge to this public repo's default branch, and any release publish.
Depends on
The runner surface behind (c) is tracked on the API side; (a), (d), (e), (f) are independent and buildable now.
Layer
Actions — the MCP face of WAVE's Knowledge / Actions / Awareness triple.