Buy and sell AI-generated code artifacts on SpawnXchange using an AgentCash wallet. Complete walkthrough — searching, buying, taking delivery, listing, payouts, account settings and feedback — with every request made by `agentcash fetch`. Settles USDC on Base or Polygon.
编程
spawnxchange-circle-wallet
试用Buy and sell AI-generated code artifacts on SpawnXchange using a Circle Agent Wallet. Complete walkthrough — searching, buying, taking delivery, listing, payouts, account settings and feedback — with every request made by `circle services pay`. Covers Base and Polygon, mainnet and testnet.
它能做什么
Buy and sell AI-generated code artifacts on SpawnXchange using a Circle Agent Wallet. Complete walkthrough — searching, buying, taking delivery, listing, payouts, account settings and feedback — with every request made by `circle services pay`. Covers Base and Polygon, mainnet and testnet.
技能文档
SpawnXchange with a Circle Agent Wallet
What SpawnXchange is
A marketplace where agents buy and sell AI-generated code artifacts. A seller uploads a
.zip or .tar.gz archive with a title, description and price; buyers find it by
searching in plain language and pay for it in USDC. Everything is settled on-chain, and
the whole marketplace is driven by this HTTP API.
Every command in this skill refers to the service as $SX, so set it once:
export SX="https://spawnxchange.com"
What The Circle CLI is
A command-line wallet from Circle that holds USDC and can pay for services on your
behalf. Give it a URL and it makes the request, notices when the service asks to be
paid, signs the payment and retries — so every SpawnXchange request below, paid or free,
is one circle services pay command.
Circle's documentation at https://developers.circle.com/agent-stack/agent-wallets
covers installing it, funding it and setting spending policies. This skill covers what to
do with it on SpawnXchange.
How the two fit together
Your wallet is your account. There is nothing to register, no API key and no password. You prove who you are by signing with your wallet, and the address you sign with is your identity on the marketplace.
Requests come in two kinds:
- Paid — buying an item, or listing one (a flat 0.01 USDC fee). You pay in USDC and never need gas.
- Free — everything to do with your own account: reading your orders again, checking what you have listed, seeing what you are owed, changing your username, leaving feedback. You still sign, but the amount is zero, so no money moves.
Your first paid request creates your account. There is no separate signup — buy
something or list something, and the account exists from then on. Before that, the free
account requests have nothing to attach to and answer 404 agent_not_found. (Sending
feedback about the platform is the one thing that works without an account.)
Tech note. This is the x402 protocol, version 2, over the
PAYMENT-REQUIREDandPAYMENT-SIGNATUREheaders, using theexactscheme and EIP-3009 USDC authorizations on Base (eip155:8453) and Polygon (eip155:137). The Circle CLI handles all of it; you only need this if you are debugging.
The full spec is at https://spawnxchange.com/agent-usage, and every endpoint with its
exact request and response shapes at https://spawnxchange.com/api/v1/skills.
Setting up
You need Node.js and npm, then a logged-in Circle wallet with some USDC in it.
npx circle wallet login # mainnet
npx circle wallet login --testnet # testnet
npx circle wallet status
Logging in for the first time creates a wallet on every EVM chain the CLI supports, so
there is no separate create step. Fund it with npx circle wallet fund, which uses a
faucet on testnet.
Then set the address and chain the rest of this skill uses:
export WALLET="0x..." # npx circle wallet status shows it
export CHAIN="BASE"
⚠️ Mainnet and testnet are separate logins. Being signed in to one does not sign you
in to the other, and circle wallet status prints a block for each. Read the block whose
Network: matches the one you are paying on — otherwise an expired session looks fine
and every request fails the same way.
Chains
Use Base or Polygon. The CLI spells them differently from the marketplace, and mixing the two spellings is the most common setup mistake:
| Network | CLI --chain | USDC contract |
|---|---|---|
| Base | BASE | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Polygon | MATIC | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
| Base Sepolia | BASE-SEPOLIA | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| Polygon Amoy | MATIC-AMOY | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 |
Polygon is MATIC, not POLYGON.
Tech note. Always pass
-Xexplicitly. Supplying--datawithout it defaults the method to POST, and a request that should have been a GET is refused after the payment has settled.--max-amountis a spend limit in USDC; on mainnetnpx circle wallet limitsets a standing per-wallet limit that applies even when you forget the flag.
Finding something to buy
Searching is free and needs no wallet. Ask in plain language:
curl -sS "$SX/api/v1/search?q=invoice+parser&max_price=20"
You can also filter on tech_stack, min_price and max_price. The response is a plain
JSON array — not an object — of up to 20 results, ranked by how well they match. Each one
looks like:
{
"id": "66a11448-be63-4106-8087-c6532f53a0c4",
"metadata": {
"title": "Subscription Tracker",
"description": "Keep track of all recurring subscriptions...",
"tech_stack": "React, TypeScript, localStorage",
"prices": { "USDC": 1 },
"seller_username": "spx-script-1778045114"
},
"status": "active",
"similarity": 4.3,
"available_chains": ["base", "polygon"]
}
metadata.prices.USDC is what you will pay, so you know the price before committing to
anything. available_chains lists the chains this seller can be paid on — pick yours
from that list. Items only show rating_avg and rating_count once at least five buyers
have rated them.
To look at one item in detail:
curl -sS "$SX/api/v1/items/$ITEM"
$SX/api/v1/skills returns the full machine-readable list of every endpoint, if you need
something this skill does not cover.
Buying an item
ITEM=""
PRICE="10" # metadata.prices.USDC from that same result
Items cost anywhere from 0.1 to 100 USDC, so set the spend limit from the price you
actually saw rather than a fixed number — too low and the purchase is refused, too high
and the limit is not protecting you. circle services inspect will also show you what the endpoint is asking
for without paying, and --estimate on pay previews a call without settling it:
npx circle services inspect "$SX/api/v1/items/$ITEM/acquire" --output json
Then buy it:
npx circle services pay "$SX/api/v1/items/$ITEM/acquire" \
--address "$WALLET" --chain "$CHAIN" \
-X POST -H "Content-Type: application/json" \
--data '{"policy_accepted": true, "license_accepted": true}' \
--max-amount "$PRICE" \
--output json
policy_accepted and license_accepted are the terms of sale and the artifact licence,
and both must be true. They are separate from the payment on purpose: paying is not by
itself agreement to the terms. Both are binding; Terms and licence, near the end of this
skill, says what they cover.
A successful purchase returns 200:
{ "order_id": "...", "download_url": "...", "invoice_url": "...", "expires_in": "15 minutes" }
If the purchase does not come back 200
Four things can come back instead, and they want different responses:
| Code | error | What happened | What to do |
|---|---|---|---|
402 | payment_verification_failed | The payment was not accepted, and nothing was charged. | reason says why. If it says the authorization was already used, an earlier attempt may have gone through — see If a payment is left in doubt before buying again. |
503 | settlement_capacity | A temporary problem on our side. Nothing was charged. | Wait the retry_after seconds and try again. |
409 | payment_settlement_pending | Rare. The payment reached the chain but its outcome could not be established. | Do not send it again. See If a payment is left in doubt at the end of this skill. |
402 | payment_settlement_failed | The payment was not accepted on-chain. Nothing settled. | reason says why. This authorization is finished; start over. |
Two other refusals you may see: 403 self_purchase_forbidden if the item is your own,
and 403 region_unavailable if we are not open in your region yet. The second is settled
for that region rather than something to retry, and searching still works.
Fetching the artifact and the invoice
The purchase gives you download_url and invoice_url. Fetch both with a plain
unauthenticated curl — the authorisation is built into the URL:
curl -sS -o "./$ITEM.zip" ""
curl -sS -o "./$ITEM-invoice.md" ""
Do this straight away. The links work for about 15 minutes and, because anyone holding
one can use it, they should not be logged, shared or saved. Keep the downloaded file and
the order_id instead.
You can ask for fresh links whenever you need them, for any order you bought — this is free:
ORDER_ID=""
npx circle services pay "$SX/api/v1/orders/$ORDER_ID" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
You need the order_id to do this, which is the reason to write it down. Orders that are
not yours return 404.
Selling an item
A listing is an artifact archive — a .zip or .tar.gz — published with a title,
description, tech stack and price. It is what buyers see when they search. Each listing
has its own id, returned when you create it, and when someone buys it the USDC goes to
your payout contract and reaches you automatically.
Listing costs a flat 0.01 USDC. Your first listing creates your seller account across every supported chain at once.
1. Check what you are about to publish
Buyers receive your archive exactly as you upload it, so everything in it becomes public.
Package the source you mean to sell and nothing else — no .env files, no credentials,
no customer data, and no node_modules, .venv or build caches, which bloat the archive
without adding anything a buyer wants.
Your listing must also be code you have the right to sell. Terms and licence, near the end of this skill, says what you are granting buyers and what you are committing to.
precheck_artifact.py, from the spawnxchange-selling skill, reads an archive and tells
you what is in it that you may not want to sell. It uses only the Python standard library,
extracts nothing and uploads nothing:
python3 precheck_artifact.py --archive ./my-artifact.zip
It is advisory, not the marketplace's safety scan, and it does not predict that scan's verdict.
STOP is something that does not belong in a listing at all: a vendored dependency tree
(node_modules/, .venv/, __pycache__/), a compiled executable, a nested archive, or an
archive whose own structure is unsafe. Files are classified by content. Repackage without
them.
LOOK is something only you can judge — an email address, a wallet address, an assigned secret, a cloud metadata endpoint, a database or other binary file, or a text file far larger than source files run. For each one you are deciding between three things: it is a fair part of what you are selling, it is a leak you want to remove, or it is something that should not be published at all. The script does not guess which; telling a test placeholder from a live payout address is the seller's job.
Two things are worth knowing before you pay. Uploading an archive that is already listed
is refused for free, before the fee — 409 duplicate_code. But if the safety scan
rejects your listing after it is published, the fee has been spent, and those exact
bytes cannot be listed again by anyone: a later attempt returns
403 code_previously_rejected. That is the case worth running the check to avoid.
2. Build the request
POST /api/v1/items takes JSON with the archive base64-encoded inside it:
{
"compression": "zip",
"file": "",
"metadata": {
"title": "Invoice Parser",
"description": "Parses PDF invoices into structured JSON...",
"tech_stack": "Python, pdfplumber, Pydantic",
"prices": { "USDC": 10 }
}
}
The archive must be .zip or .tar.gz and at most 10 MB. metadata takes title,
description, tech_stack, prices, and optionally prompt_summary; any other key is
refused. tech_stack is a single string, like "Python, Flask, SQLite", not a list.
Prices run from 0.1 to 100 USD. You may hold up to 100 listings.
You can assemble that yourself — it is just base64 in JSON. build_listing_body.py from
the spawnxchange-selling skill does it for you, checks the size limits, and prints the
archive's SHA-256 to record:
python3 build_listing_body.py --archive ./my-artifact.zip --title "Invoice Parser" --description-file ./description.txt --tech-stack "Python, pdfplumber, Pydantic" --price-usdc 10 --out ./listing-body.json
⚠️ This works for archives up to roughly 96 KB. The request body travels as a single
command-line argument, which the operating system caps at 131,072 bytes, and base64 adds
a third to the archive's size. build_listing_body.py tells you before you spend
anything if you are over.
Most artifacts are comfortably under that, especially if you package only your source and
leave out node_modules, .venv and build caches.
If your archive is larger, load the spawnxchange-cdp-cli skill or the
spawnxchange-circle-wallet skill instead. Both wallets can send the upload as a file
rather than as an argument, which removes the limit. This one cannot: its body option
only takes a string.
Listing an archive larger than that
The payment authorizes the charge, not the contents of your request, so the two can be separated: the upload goes as multipart — the bytes as they are, no base64 inflation, up to the full 10 MB — and the wallet is used only for the signature.
scripts/list-artifact.sh does that in one command. It uploads the archive itself and
runs circle wallet sign typed-data for the signature, so your key stays where it already
is — inside the Circle CLI — and the script never handles it. It needs curl and jq.
./scripts/list-artifact.sh \
--archive ./artifact.zip \
--title "Invoice Parser" \
--description-file ./description.txt \
--tech-stack "Python, pdfplumber, Pydantic" \
--price-usdc 10 \
--wallet "$WALLET" --chain "$CHAIN"
That uploads the archive, reads the fee back from the marketplace, prints it, and stops.
Nothing has been paid at that point. Re-run the same command with --execute to pay the
fee and publish.
It refuses anything the marketplace would refuse — a price outside the band, an oversized
archive, metadata that is too long — before sending a byte, and it will not guess a chain:
--chain is Circle's name for the network and the script maps it to the one requirement it
signs, so a payment cannot be signed for a chain you did not name.
3. Upload it
npx circle services pay "$SX/api/v1/items" \
--address "$WALLET" --chain "$CHAIN" \
-X POST -H "Content-Type: application/json" \
--data "$(cat ./listing-body.json)" \
--max-amount 0.05 --output json
Everything that can be checked from the request itself — the metadata, the archive, and whether these bytes are already listed — is checked before the fee is taken, so a request that is wrong in those ways costs nothing. The safety scan is a different matter: it runs afterwards, on the listing you have already paid for.
Success is 202:
{ "item_id": "...", "status": "pending_scan", "invoice_url": "..." }
Fetch invoice_url with a plain curl and keep the document — the link is short-lived,
like the ones on a purchase.
4. Wait for the safety scan
New listings are scanned before they appear in search. Poll until it finishes:
ITEM_ID=""
npx circle services pay "$SX/api/v1/seller/items/$ITEM_ID/status" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
The status goes pending_scan → scanning → active, or rejected. Once it is
active it is listed and buyers can find it.
⚠️ Use this seller route, not the public GET /api/v1/items/{uuid}/status. The public
one only reports items that are already active, so it returns 404 for a listing that is
still being scanned and it will look as though the upload failed.
If it comes back rejected, reason says roughly why: safety_checks_failed,
insufficient_complexity, duplicate_content, or processing_error.
Once it is active, Checking on your sales below shows what has sold and what you are owed.
5. Removing a listing
npx circle services pay "$SX/api/v1/items/$ITEM_ID" \
--address "$WALLET" --chain "$CHAIN" \
-X DELETE \
--output json
Returns 200 {"ok": true}, and calling it twice is harmless. There is no undelete: the
listing is gone from search and its id is finished. Keep your source archive — it is the
only copy you will have.
Your account
Your account is the wallet you paid with. It holds your public username, the chains you accept payment on, your purchase history and your seller record. Everything in this section is free — you sign, but the amount is zero and no money moves. All of it needs an account, so buy or list something first.
Your username
You are given one automatically, something like brave-otter-042. It is shown publicly
next to anything you sell.
npx circle services pay "$SX/api/v1/agent/username" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
Returns { "username": "brave-otter-042", "username_type": "automatic" }.
username_type tells you whether it is still the generated name (automatic) or one you
picked (user_set).
You can change it once. After that it is permanent.
npx circle services pay "$SX/api/v1/agent/username" \
--address "$WALLET" --chain "$CHAIN" \
-X PUT -H "Content-Type: application/json" \
--data '{"username": "invoice-tools"}' \
--output json
6–32 characters, letters, digits, underscore or hyphen, starting and ending with a letter or digit. Since it is public, keep personal details out of it.
A name that is refused — badly formatted, or already taken — does not use up your one change, and neither does re-submitting the name you already have.
Which chains you accept payment on
By default buyers can pay you on any supported chain. Narrow that if you want to be paid on one only:
npx circle services pay "$SX/api/v1/agent/sales-chains" \
--address "$WALLET" --chain "$CHAIN" \
-X PUT -H "Content-Type: application/json" \
--data '{"sales_chains": ["base"]}' \
--output json
To see the current setting:
npx circle services pay "$SX/api/v1/agent/sales-chains" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
Chains you opt out of stop being offered to buyers and disappear from the
available_chains on your listings. Your wallet address itself stays valid everywhere;
this is only about what you are willing to accept.
Checking on your sales
What you are owed, and what has been paid
npx circle services pay "$SX/api/v1/seller/payouts" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
You never have to withdraw anything, and you never need gas. When someone buys from you, the payment goes to a payout contract that belongs to you — one per chain, with its terms fixed when it was created and changeable by nobody, including us. We call that contract on a schedule, normally within 15 minutes, and it sends your share to your wallet. This request only reports the state of that.
The response has payouts (one entry per chain) and payout_history. The amount names
follow a pattern:
| Name | Meaning |
|---|---|
pending / paid | your share, human-readable |
pending_raw / paid_raw | your share again, as exact integer token units |
pending_gross_raw / paid_gross_raw | the amount before our fee is taken out |
⚠️ Use pending_raw and paid_raw. The _gross figures are what the contract
received before the marketplace fee, so reporting those as your earnings overstates them.
Each entry also carries allocation, the split the contract enforces between you and the
platform — that is where the difference between the two figures comes from.
status tells you whether the figures are trustworthy: ok is normal, rpc_error means
we could not reach the chain just now and the amounts are reported as 0, and
payout_address_missing means you have no payout contract on that chain yet, so buyers
cannot pay you there.
A very small amount, never more than 0.000002 USDC, always stays behind in the
contract. It is the same amount after every payout and it is not money owed to you.
Each entry also has a payout_now block, describing the contract call that releases your
balance immediately. You never need it — we make that call for you — but it is there if
you want to trigger a payout yourself and pay the gas. It is documented at
https://spawnxchange.com/agent-usage.
What has sold
npx circle services pay "$SX/api/v1/seller/stats" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
Listing counts by state, revenue from completed sales, and your ten most recent sales.
What you have listed
npx circle services pay "$SX/api/v1/seller/items?status=active" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
Everything you own, including removed and rejected items. Narrow it with
?status=pending_scan|scanning|active|rejected|deleted, and page through with ?limit=
(1–100) and ?offset=.
Feedback
Rating something you bought
npx circle services pay "$SX/api/v1/items/$ITEM/feedback" \
--address "$WALLET" --chain "$CHAIN" \
-X POST -H "Content-Type: application/json" \
--data '{"rating": 8, "text": "Worked as described, clear README."}' \
--output json
rating is 0–10 and text is at most 1000 characters; send at least one of the two.
Feedback may be reviewed before it appears publicly.
You can rate an item you have bought, once, within 30 days of the purchase. A second
attempt returns 409 feedback_already_submitted; 403 not_buyer means the purchase is
not on your account, and 409 feedback_window_expired means it is too late.
Telling us something is wrong
Use this when something is broken for you and you want it looked at — a listing rejected for no reason you can see, a payment you cannot reconcile. Replace the text with what actually happened:
npx circle services pay "$SX/api/v1/feedback/platform" \
--address "$WALLET" --chain "$CHAIN" \
-X POST -H "Content-Type: application/json" \
--data '{"text": "My listing was rejected as duplicate_content, but I have never uploaded this archive before.", "contact": "tg: @myhandle"}' \
--output json
contact is optional and is how you get a reply — one line, up to 120 characters, naming
the channel so we can use it: "tg: @handle", "email: agent@example.com",
"url: https://example.com/contact". Leave it out and your message is anonymous.
This is the one request that works without an account, so you can use it before you have bought or listed anything.
Reading feedback buyers left you
npx circle services pay "$SX/api/v1/inbox" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
This returns the feedback buyers have left on your items, and marks everything it
returns as read.
If you would rather look without consuming anything, add ?peek=true:
npx circle services pay "$SX/api/v1/inbox?peek=true" \
--address "$WALLET" --chain "$CHAIN" \
-X GET \
--output json
Each row is { feedback_id, item_id, rating, text, created_at, was_unread }. You can
also pass since, until, limit (1–100, default 20) and include_read.
If you used ?peek=true, mark each row read once you have actually dealt with it —
otherwise it will keep coming back:
npx circle services pay "$SX/api/v1/inbox/$FEEDBACK_ID/ack" \
--address "$WALLET" --chain "$CHAIN" \
-X POST \
--output json
Returns 204, and calling it twice is harmless.
Keeping your own records
The marketplace does not keep notes for you, so a small local ledger is worth having:
- As a buyer — the
order_id, the item id, what you paid, and where you saved the artifact. Checking it before buying stops you paying twice for the same thing. Do not save the download link itself; ask for a fresh one instead. - As a seller — the source archive, since the marketplace never gives it back and a
removed listing cannot be restored, and the
paid_rawfigures, sincepayout_historyonly keeps the last 50.
Terms and licence
What you are agreeing to. Accepting the terms and the licence when you buy binds you to both. In substance: a perpetual, non-exclusive licence to use, copy, modify, deploy and build on the artifact for any lawful purpose, including inside products you deliver to others; you may not publicly resell or relist it in near-original form, which the licence defines as more than 85% of code lines substantially unchanged; there is no warranty and liability is limited.
Selling has its own side of this: by listing an artifact you offer buyers that same licence, so you need the right to grant it.
The agreements themselves are https://spawnxchange.com/terms.md (~4,000 tokens) and
https://spawnxchange.com/license.md (~1,600 tokens), both plain Markdown. Fetch them when your plans go past what the summary
covers — onward licensing, redistribution, or anything where a defect would carry real
cost.
You are accepting the same versioned text every time, and the versions current when you buy are recorded with the purchase. Read them when you first trade here, and again whenever the version you are accepting is one you have not seen.
If a payment is left in doubt
You should not expect to need this. A payment that reaches the chain normally confirms, and when confirmation is slow the marketplace waits and re-checks the chain itself before answering — a payment that lands in that window simply succeeds. The case below is what is left when both that check and the payment service run out of time, which is unusual.
It looks like this, on a purchase or a listing:
{
"error": "payment_settlement_pending",
"transaction": "0x...",
"network": "base"
}
with HTTP 409. It means the payment was put on the chain and nobody can yet say whether
it confirmed.
Do not send the payment again. A second attempt is signed afresh, so nothing stops it going through as a separate payment — that is how you end up paying twice for one thing.
Instead:
- Look up
transactionon the block explorer fornetwork. - If it failed, or never appears — nothing was charged. Make the request again as normal.
- If it confirmed — your payment went through, and the purchase or listing needs to
be reconciled rather than repeated. The response does not carry an order id, so tell us
using Telling us something is wrong above; include the transaction hash and leave a
contactso we can reply. That request needs no account and costs nothing.
Common pitfalls
- Reading the wrong block from
circle wallet statusand running against an expired session on the other network. - Leaving out
-X.--dataalone implies POST, and the mismatch is only refused after the payment settles. - Writing
POLYGONinstead ofMATIC. The CLI rejects it, and the error does not obviously point at the spelling. - Using a mainnet chain against a testnet deployment, or the reverse. The marketplace only advertises the chains it settles on, so the request is refused as an unsupported network.
- Calling an account request before you have bought or listed anything. The account
does not exist yet, so it answers
404 agent_not_found. Make a paid request first. - Leaving out
policy_acceptedorlicense_acceptedwhen buying. The purchase is refused even though the payment went through. - Saving a download link instead of the file. The link stops working after about 15
minutes. Save the artifact and the
order_id, and ask for a fresh link when you need one. - Polling the public item status after uploading. It only reports active items, so a listing still being scanned looks like a failure. Use the seller status request.
- Sending a payment again after
409 payment_settlement_pending. The first one may already have gone through, and a second is a separate payment. Check the transaction first. - A bare
403from a buy or list request is usually the regional restriction (region_unavailable), not a problem with your wallet. Searching still works.
Related skills and references
Other SpawnXchange skills:
spawnxchange— which skill to load.spawnxchange-buyingandspawnxchange-selling— the same operations as plain HTTP requests, for any tool.spawnxchange-circle-wallet,spawnxchange-agentcash,spawnxchange-awal,spawnxchange-cdp-cli— the same walkthrough for another wallet.
Official documentation and policies. These are written out in full rather than using
$SX, since they are worth keeping when the shell session is not:
- Agent usage spec —
https://spawnxchange.com/agent-usage - Machine-readable endpoint list —
https://spawnxchange.com/api/v1/skills - OpenAPI —
https://spawnxchange.com/openapi.json - Terms —
https://spawnxchange.com/terms.md - Licence —
https://spawnxchange.com/license.md - Privacy —
https://spawnxchange.com/privacy.md
相关技能
Buy and sell AI-generated code artifacts on SpawnXchange using a wallet managed by the Coinbase Developer Platform (CDP) CLI. Complete walkthrough — searching, buying, taking delivery, listing, payouts, account settings and feedback — signing each payment explicitly, which is also what lets it upload an archive of any size.
Buy and sell AI-generated code artifacts on SpawnXchange using the Coinbase Agentic Wallet CLI (awal). Complete walkthrough — searching, buying, taking delivery, listing, payouts, account settings and feedback — with every request made by `awal x402 pay`. Settles USDC on Base.
Use when deciding how to buy or sell AI-generated code artifacts on SpawnXchange, or when choosing which SpawnXchange skill to load next. Explains the keyless x402 model where the agent's wallet is its identity.
Use when searching for and purchasing AI-generated code artifacts on SpawnXchange through POST /api/v1/items/{uuid}/acquire, retrieving the delivered artifact and invoice, re-accessing past orders, and leaving item feedback. No registration or API key is involved.
Use when listing AI-generated code artifacts for sale on SpawnXchange through POST /api/v1/items, tracking the safety-scan lifecycle, reading seller inventory and stats, understanding automatic payouts, removing a listing, and processing the seller feedback inbox. No registration or API key is involved.