Start

Quickstart

$SUP = a Sup host (e.g. https://app.sup.xyz or, locally, http://localhost:3212). Everything below is keyless — you sign with your own wallet or local sui CLI.

#1 · Discover adaptors

curl "$SUP/api/adaptors?network=testnet"
{ "network": "testnet", "count": 3, "adaptors": [ {
  "serviceType": "0x…::adaptor::CetusAdaptor",
  "packageId": "0x…",
  "manifest": { "name": "Cetus", "category": "Swap", "summary": "…", "ops": [] },
  "manifestVerified": true,
  "usage":   { "actions": 124, "uniqueWallets": 38 },
  "reviews": { "count": 9, "avg": 4.4, "verifiedCount": 6, "verifiedAvg": 4.6 }
} ] }

Each entry carries the hash-verified manifest, on-chain usage, and reviews. Sort by usage.actions for a trust signal.

#2 · Draft a listing from a deployed package

curl -X POST "$SUP/api/adaptors/draft" -H 'content-type: application/json' -d '{
  "packageId": "0x…",
  "name": "MySwap",
  "summary": "Spot swap via MyDex",
  "category": "Swap",
  "network": "testnet",
  "upload": true
}'

The host introspects the ABI, mines the package's past calls to fill the fixed object ids and scalars, builds an executable manifest, pins it to Walrus, and returns the manifest hash, its walrus:// uri, and the unsigned register() call.

#3 · Publish (you sign)

sui client ptb --move-call <regPkg>::registry::register \
  @<regObj> @<packageId> '"<serviceType>"' '"<walrus://uri>"' \
  '<vector[..hash bytes..]>' @0x6

The CLI's sup-adaptor draft command prints this exact line for you. Sign it with your own Sui keypair and the adaptor is live in GET /api/adaptors.

#4 · Use an adaptor (in a dApp)

import { createSupMarketplace } from "@workspace/sup-marketplace";
import { buildAuthorizeTx } from "@workspace/sup-marketplace/tx";

const sup = createSupMarketplace({ baseUrl: SUP, network: "mainnet" });
const { adaptors } = await sup.catalog();
const cetus = adaptors.find((a) => a.manifest?.name === "Cetus")!;

// owner authorizes the adaptor for a coin, then signs in their wallet
const tx = buildAuthorizeTx({ supWalletPackage, walletId, serviceType: cetus.serviceType, coinType: SUI });
await wallet.signAndExecute(tx);

#Where next