SDK / CLI / MCP
@workspace/sup-marketplace is one keyless core with several shells. Every surface
returns data + unsigned transactions; you sign with your own wallet.
#SDK — client
import { createSupMarketplace } from "@workspace/sup-marketplace";
const sup = createSupMarketplace({ baseUrl, network }); // network: "testnet" | "mainnet"
| method | signature | returns |
|---|---|---|
catalog | () | { adaptors: CatalogEntry[], count } |
schema | () | manifest + call-spec shape + registry ids |
introspect | (packageId) | { witnesses[], ops[], modules[] } |
infer | (packageId, entry) | { args[], sampleTypeArgs[], samples } |
draft | (DraftInput) | { manifest, manifestHash, manifestUri, serviceType, ops, executableOps, register } |
DraftInput = { packageId, name, summary, category?, witness?, upload?, feeBps?, feeRecipient?, integrator? }.
#SDK — transaction builders
@workspace/sup-marketplace/tx. Each returns an unsigned @mysten/sui Transaction —
tx.setSender(addr) and sign with your wallet.
| builder | use |
|---|---|
buildRegisterTx(params) | list an adaptor (explicit ids) |
buildRegisterTxFromDraft(draft, manifestUri?) | list, straight from a draft() result |
buildAuthorizeTx({ supWalletPackage, walletId, serviceType, coinType }) | grant_service_coin |
resolveOpCall(opts) | call spec + inputs → ResolvedCall |
buildAdaptorOpTx(resolvedCall) | run an op (owner-signed) |
resolveOpCall opts: { packageId, module, entry, call, walletId, amountAtomic?, minOutAtomic?, coinInType?, coinOutType? }.
#React widget
@workspace/sup-marketplace/react → <SupMarketplace baseUrl network theme onAuthorize onUse />.
See Embed the widget.
#CLI
export SUP_URL=$SUP SUP_NETWORK=testnet # or pass --url / --network per command
sup-adaptor catalog
sup-adaptor schema
sup-adaptor introspect <packageId>
sup-adaptor infer <packageId> <entry>
sup-adaptor draft <packageId> --name <n> --summary <s> [--category <c>] [--upload]
Output is JSON. draft additionally prints a ready sui client ptb … registry::register …
line to sign with your local sui keypair.
#MCP server
claude mcp add sup-marketplace -- bun /path/to/sup-marketplace/src/mcp.ts
# env: SUP_URL, SUP_NETWORK
Tools (JSON in/out): search_adaptors, introspect_adaptor { packageId },
infer_call_spec { packageId, entry }, draft_listing { packageId, name, summary, category?, upload? }.
Works in any MCP client — Claude Code, Codex, Cursor, …
#Skills
Drop-in playbooks for any agent that loads skills. Both live in the repo under
skills/<name>/SKILL.md and are served over HTTP + GitHub:
| skill | what it does | get it |
|---|---|---|
sup-marketplace | discover / authorize / run / publish deployed adaptors | GitHub |
sup-adaptor-dev | write a conforming adaptor in Move (witness + intent flow) | /llms/adaptor-dev.md · GitHub |
Install one with: curl -sL "$SUP/llms/adaptor-dev.md" -o .claude/skills/sup-adaptor-dev/SKILL.md
(or the GitHub raw URL). See Build an adaptor for the full walkthrough.
Keyless everywhere. None of these hold keys. The user signs
register()/grant_service_coin/ the adaptor op with their own wallet or localsuikeypair.