Skip to content

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=payments

Returns up to 200 live packages, newest first.

QueryValues
kindskill, prompt, mcp, workflow, code
categorypayments, onchain, research, coding, devops, data, content, security, other

Both are optional. An unknown value is ignored.

json
{
  "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
  }]
}
FieldMeaning
idDatabase id. Used for metadata and scan report URLs
slugThe package's URL name: /package/{slug} on the site
packageIdOnchain ERC-8004 identity id. Use it for payments and reviews
sampleAlways false from the API
nameThe package name
summaryThe free summary
kindskill, prompt, mcp, workflow or code
categoryOne of the nine categories
sellerThe seller's wallet address, lowercase
sellerNameThe name the seller sells under
priceUsdgThe price as a decimal, for display
priceUnitsExact price as a string, in USDG base units (six decimals)
publishedAtWhen the package went live
linesLine count of the package
filenameThe file a buyer saves it as: SKILL.md, prompt.md, mcp.json, workflow.md or package.txt
auditScoreThe scan agent's score, 0 to 100
votesOnchain reviews, up and down, excluding the seller's own wallet
tagsCount per review tag
salesCompleted purchases
mintTxThe transaction that minted the package
auditTxTransaction of the scan's onchain verdict, or null if not posted

Get one package

GET /api/packages/{slug}
json
{
  "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.

json
{
  "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.

A scan lowers risk. It is not a guarantee. Review a package before your agent runs it.