v0.1.0 — read-side multi-protocol commerce SDK
The first cut of Steelyard. Define commerce once. Serve it as a real MCP server, a real ACP feed, and a real UCP discovery endpoint, all from the same defineCommerce() config.
What ships
Six packages on npm under MIT:
| Package | What it does |
|---|---|
@steelyard/core |
Schema, types, defineCommerce(), validate(). Runtime dep on zod only. |
@steelyard/mcp |
Emit an MCP server via @modelcontextprotocol/sdk. Tools list_offers, get_offer; resources commerce://manifest, commerce://policies. HTTP + stdio transports. |
@steelyard/acp |
Emit an ACP feed. AJV-validated against the vendored spec at 2026-04-17 at emit time. |
@steelyard/ucp |
Emit a UCP discovery doc and shopping catalog API. AJV-validated against UCP 2026-04-08 schemas at emit time. |
@steelyard/client |
Buyer SDK with MCP/ACP/UCP auto-detect. Steelyard.connect(url) returns the same Merchant handle regardless of which protocol the merchant speaks. |
@steelyard/agent |
LLM-driven CLI (steelyard-agent). Uses Anthropic when ANTHROPIC_API_KEY is set; falls back to a naive regex parser otherwise. Both paths reach an answer. |
The principle
No fake / incomplete stuff. Every package is end-to-end tested against real protocol clients. ACP feeds and UCP catalog responses are AJV-validated at emit time — a bug that would produce non-conformant output throws before the bytes leave the server.
What v1 doesn't do
Read-side only. Payment execution (carts, checkout, receipts, Stripe adapter, wallet delegation) is deliberately deferred to v2. The trust/idempotency/SCA/consent design space needs its own pass — we'd rather ship a complete read-side now.
Compatibility
Pre-1.0 minor-match semver on the read-side capability:
| Client | Server | Result |
|---|---|---|
0.1 |
0.1.x |
✅ Compatible |
0.1 |
0.2.x |
❌ version_mismatch |
0.1 |
1.0.x |
❌ version_mismatch |
Quickstart
npx @steelyard/agent --merchant http://localhost:3000/mcp "what does this shop sell"Or boot the example:
git clone https://github.com/interfacelabs/steelyard-sdk.git steelyard
cd steelyard && pnpm install && pnpm -r build
pnpm --filter @steelyard/example-coffee-shop startSee docs/getting-started.md for the full demo.
Test coverage
@steelyard/core— 100%@steelyard/mcp,@steelyard/acp,@steelyard/ucp,@steelyard/client— ≥ 95%@steelyard/agent— ≥ 90%
PR CI runs mocked unit tests on every PR; a scheduled CI job runs the live protocol-parity test daily and on every release tag.
Full changelog: https://github.com/interfacelabs/steelyard-sdk/commits/v0.1.0