Appearance
API changelog
What changed on the public API: the /v1 surface described by openapi.json and the SDKs that wrap it. The app's own changelog is CHANGELOG.md at the repo root; this one lists only what a client written against /v1 can see.
Within v1 changes are additive: no field is removed or retyped, and a deprecation carries Deprecation and Sunset headers with twelve months of notice. Anything that may still break lives under /v1/preview/.
Unreleased
Added
/mcp: MatterWave as a Model Context Protocol server (Streamable HTTP, revision 2026-07-28 with theinitializerevisions still answered), authenticated by an API key as the bearer. Toolslist_conversations,get_conversation,search_conversations,create_conversation,send_messageandlist_models;conversation://<id>resources. Rate-limited like/v1; every tool call a key makes is an audit row. Client setup indocs/mcp.md.POST /v1/embeddings: OpenAI's embeddings request, proxied to the deployment's one embedding model (modelmay be omitted; naming another is a 404model_not_found). A deployment with no embedding model answers 404embeddings_not_configured;GET /v1says which undercapabilities.embeddings.POST /v1/chat/completionsrelaystools,tool_choiceandresponse_formatto the model as sent. Tool calls come back inmessage.tool_calls, or asdelta.tool_callsfragments on a stream, for the caller to run;finish_reasonistool_callswhen any came back. Atool_choicethat demanded a call the model did not make is a 400tool_calls_unsupportedrather than prose parsed as an answer. A request the model gateway itself rejects is a 400upstream_rejectedcarrying the gateway's reason, where it used to be a 502.GET /v1carriescapabilities: what this deployment can do, from its configuration (streaming, response formats, tool pass-through, image input, embeddings), so a client can decide before it holds a key.- The OpenAPI document at
docs/developers/openapi.json, generated from the app bymake openapi, and the developer portal at/developersthat renders it. - Python SDK
matterwave-sdk(sdk/python, imported asmatterwave_sdk) and TypeScript SDK@matterwave/sdk(sdk/typescript): typed clients for every/v1operation, streaming as an iterator, retries on 429 and 5xx honouringRetry-After, and theX-Request-Idon every error.
Changed
- The GRT model family is now GRT Nano (GRT Nano, GRT Nano Pro, GRT Nano Max). Same models, prices and plans.
GET /v1/modelslists only the new ids. The old ids stay accepted as aliases everywhere a model is named (modelonPOST /v1/chat/completions,GET /v1/models/{model}) and resolve to the new model; the response'smodelis the new id. - Python SDK: the distribution is now
matterwave-sdkand the import packagematterwave_sdk(from matterwave_sdk import MatterWave). The PyPI namematterwavebelongs to an unrelated physics library with its ownmatterwavemodule; installing that PyPI name never installed this SDK. - The legacy
functionsandfunction_callparameters are refused with 400unsupported_parameter;toolsandtool_choicereplace them. (tools,tool_choiceandresponse_formatused to be refused the same way.)
v1
The first stable surface: GET /v1, GET /v1/models, GET /v1/models/{model} and POST /v1/chat/completions (buffered and streamed), OpenAI's request and response shapes, OpenAI's error envelope on every refusal, metadata.conversation_id to record a turn into a conversation, 60 requests a minute per key, and X-Request-Id on every response.