Reference

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"
methodsignaturereturns
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 Transactiontx.setSender(addr) and sign with your wallet.

builderuse
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:

skillwhat it doesget it
sup-marketplacediscover / authorize / run / publish deployed adaptorsGitHub
sup-adaptor-devwrite 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 local sui keypair.