Vendor API and CLI reference
On this page
The CLI wraps most of these calls. The full marketplace API is also on Marketplace Registry.
Hosts
Host | Use |
|---|---|
| the registry: public reads, and your writes with a partner key |
| public registry reads and harvest |
Auth
Auth | How | Used for |
|---|---|---|
none | — | public reads |
partner key | header | publish, revoke, must-upgrade (registry); harvest uses |
Public reads (/api/v1/registry, no auth)
Method | Path | Returns |
|---|---|---|
GET |
| published packages; filters |
GET |
| packages ranked by meaning and recent usage |
GET |
| latest version detail: score, ratings, manifest, methods |
GET |
| version history |
GET |
| one version (its |
GET |
| public reviews, newest first |
GET |
| a vendor public key |
curl -s "https://market.opvs.ai/api/v1/registry/packages/@opvs-ai/agentboard/versions" \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['name'], [v['version'] for v in d['versions']][:3])"
# → agentboard ['2.2.9', …] (a wrong name answers 404)Errors
Code | Trigger | Fix |
|---|---|---|
| no published package or version with that name | check |
| a bad query, for example | send |
Vendor writes (partner key, market.opvs.ai)
Method | Path | Notes |
|---|---|---|
POST |
| an upload URL for your bundle |
POST |
| publish a signed version. |
POST |
| body |
POST |
| body |
A partner key can only act on packages in its own vendor scope; anything else is 403.
# revoke @acme/leads 1.2.0 with your partner key
PKG_ID=$(curl -s "https://market.opvs.ai/api/v1/registry/packages/@acme/leads/1.2.0" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
curl -s -X POST "https://market.opvs.ai/api/v1/registry/packages/$PKG_ID/revoke" \
-H "X-Admin-Key: $OPVS_PARTNER_KEY" -H "Content-Type: application/json" \
-d '{"reason": "secret included in the bundle; fixed in 1.2.1"}'
# → 200 with the version now "revoked"; 403 error if the package is not yoursErrors
Code | Trigger | Fix |
|---|---|---|
| partner key missing, unknown or revoked | set |
| the package belongs to another vendor | act only on your own scope |
| no such package version | look up the |
| the version already exists (publish), or is already revoked (must-upgrade) | bump the version; flag a live version instead |
| the manifest or the security review refused the publish | read |
Done by OPVS for you today
Ask vendors@opvs.ai for: vendor approval; minting and revoking certificates and partner keys; approving upstream hosts; editing the marketing overlay; replying to or hiding reviews; running the standalone security review; sandbox test calls.
The opvs-skills CLI
Install from public npm: npm install -g @opvs-ai/skills.
Command | What it does | Key flags |
|---|---|---|
| build typed tools, MCP definitions, SDK, CLI and OpenAPI from |
|
| consistency check across a skill's files |
|
| pack, sign and publish |
|
| registry health of a package |
|
| read how your skill is used |
|
| compare a | |
| fetch, verify and extract a package |
|
| sandbox test call and chat | OPVS-run today; see Preflight |
Always pass --skills-dir to generate and validate, and --api-url https://market.opvs.ai to publish: their built-in defaults are OPVS's own development setup.
npm install -g @opvs-ai/skills
opvs-skills validate leads --skills-dir ./skills
opvs-skills publish ./leads-package --dry-run --private-key "./keys/acme-signing.key"
# → validates the manifest and signs locally; prints the error and exits non-zero on a bad fieldErrors
Message | Trigger | Fix |
|---|---|---|
| a real publish without a partner key | set the variable or pass |
connection refused to |
| pass |
|
| read the skill with |
| the workspace has not installed your package | harvest only workspaces in your footprint |
Settings the CLI reads
Variable | Used by | Meaning |
|---|---|---|
|
| your partner key (same as |
|
| your partner key (same as |
|
| the API address; default |
any name you choose |
| your signing key |
A typical publish
export OPVS_MARKETPLACE_ADMIN_KEY=opvs_pk_…
export OPVS_SIGNING_KEY=… # from your CI secret
opvs-skills validate leads --skills-dir ./skills
opvs-skills publish ./leads-package --dry-run --private-key @env:OPVS_SIGNING_KEY
opvs-skills publish ./leads-package --private-key @env:OPVS_SIGNING_KEY --api-url https://market.opvs.ai
opvs-skills doctor @acme/leadsErrors
A refused publish returns 422 with error: security_review_failed, a score and findings (severity, code, message, path). See Security review.