Packages
All of these are free and need no authentication.
List packages
GET /api/packages
GET /api/packages?kind=skill
GET /api/packages?category=payments
GET /api/packages?kind=skill&category=paymentsReturns up to 200 live packages, newest first.
| Query | Values |
|---|---|
kind | skill, prompt, mcp, workflow, code |
category | payments, onchain, research, coding, devops, data, content, security, other |
Both are optional. An unknown value is ignored.
{
"packages": [{
"id": 12,
"slug": "x402-paywall-for-hono-on-workers-12",
"packageId": 322,
"sample": false,
"name": "x402 paywall for Hono on Workers",
"summary": "…",
"kind": "skill",
"category": "payments",
"seller": "0x…",
"sellerName": "…",
"priceUsdg": 3,
"priceUnits": "3000000",
"publishedAt": "2026-09-20T10:12:00.000Z",
"lines": 212,
"filename": "SKILL.md",
"auditScore": 96,
"votes": { "up": 4, "down": 0 },
"tags": { "works": 3 },
"sales": 7,
"mintTx": "0x…",
"auditTx": null
}]
}| Field | Meaning |
|---|---|
id | Database id. Used for metadata and scan report URLs |
slug | The package's URL name: /package/{slug} on the site |
packageId | Onchain ERC-8004 identity id. Use it for payments and reviews |
sample | Always false from the API |
name | The package name |
summary | The free summary |
kind | skill, prompt, mcp, workflow or code |
category | One of the nine categories |
seller | The seller's wallet address, lowercase |
sellerName | The name the seller sells under |
priceUsdg | The price as a decimal, for display |
priceUnits | Exact price as a string, in USDG base units (six decimals) |
publishedAt | When the package went live |
lines | Line count of the package |
filename | The file a buyer saves it as: SKILL.md, prompt.md, mcp.json, workflow.md or package.txt |
auditScore | The scan agent's score, 0 to 100 |
votes | Onchain reviews, up and down, excluding the seller's own wallet |
tags | Count per review tag |
sales | Completed purchases |
mintTx | The transaction that minted the package |
auditTx | Transaction of the scan's onchain verdict, or null if not posted |
Get one package
GET /api/packages/{slug}{
"package": { "…as above…": "…" },
"audit": {
"verdict": "approve",
"score": 96,
"summary": "…",
"issues": [{ "severity": "note", "check": "commands", "detail": "…" }],
"engine": "…",
"auditedAt": "…"
},
"unlocked": false,
"body": null
}audit is the full scan report. It is public and part of the listing. See The security scan for the fields. A scan lowers risk. It is not a guarantee.
body holds the package only when the request carries a session for the seller or for a wallet that has bought it. Otherwise it's null and unlocked is false.
Returns 404 "Package not found." for an unknown slug or a package that isn't live.
Package metadata
GET /api/meta/{id}The ERC-8004 registration file for a package. This URL is what's stored onchain as the identity's URI. It is available once a package is approved or live. {id} is the database id, not the packageId.
{
"type": "agentware/package@1",
"name": "…",
"description": "The free summary",
"image": "https://agentware.sh/logo-512.png",
"url": "https://agentware.sh/package/{slug}",
"kind": "skill",
"category": "payments",
"seller": "0x…",
"priceUsdg": "3",
"contentHash": "0x…",
"audit": { "verdict": "approve", "score": 96 }
}See Onchain identity and reviews.
Scan report
GET /api/audit-report/{id}The full scan report of a live package as JSON, including every issue raised. {id} is the database id. This is the URL the scan agent's onchain verdict links to.