Skip to main content
Use published @stateset/cli@1.39.0 to expose your embedded store over MCP. Local stdio needs no hosted commerce key. A model host may have its own provider requirements. Keep optional native dependencies enabled during installation.

Connect locally

Use an absolute path to the database created in the quickstart:
Start with tools/list, then a known order/customer read. Match the store path, returned identity and exact-money fields. An empty list is not proof that you opened the intended store. No --apply is configured here; write calls return previews rather than changing the store.

Scope the tool catalog

The generated 1.39 source catalog has these profile sizes, before transport, read-only and strict governed-write filtering: The catalog’s per-tool tiers are core, extended and experimental. Core is smoke-gated; curated profiles expose their selected domains across tiers. --domains a,b adds domains; it does not grant capabilities or configure external services. Experimental tools can need wallets, providers, credentials or demo stacks. Discover the actual runtime list.

Enable governed writes deliberately

An apply-capable stdio/agent endpoint requires operator-owned policy, principal and store:
Start from source kernel/examples/strict-policy.json and its principal example, replacing scope/capabilities with your actual authority. Do not use example keys or accept identity and policy from model arguments. Strict mode exposes supported typed governed writes; --apply does not bypass policy, approvals, expected versions or budgets. A profile count is not a promise that every legacy write survives strict filtering. See governed execution.

Streamable HTTP

stateset-mcp-http serves MCP at /mcp; it is separate from commerce REST /api/v1 and the messaging gateway. It uses stateless request handlers with shared configured store state. The default ephemeral store is demo-seeded; use an explicit file for persistence.
The transport supports the 2026-07-28 protocol and compatible older clients; --strict-protocol rejects older generations. Non-loopback binds require an allowed Host and API key. Browser Origins are separately checked: full origins match scheme, hostname and port, while an explicit bare hostname has broader HTTP(S)/any-port behavior. Supply keys through protected configuration; review actual deployment, proxy and TLS boundaries. Money fields and tool results have their own contracts. Inspect structured success/error results and preview status; a local payment record does not establish provider settlement. See simulation tools and recovery.
Last modified on October 20, 2026