Sell
Pricing and editing listings
Change a live capability's price, wording or schema without changing its id. Also covers what can't change, how to withdraw a capability, and how discovery ranks you.
See your listings
curl -s https://api.zanora.dev/v1/capabilities -H "x-api-key: $ZANORA_API_KEY"
# → {"capabilities":[{"capability":{…},"version":{…}}, …]} deprecated ones includedIn the console: Seller → Capabilities.
Edit a live listing
POST /v1/capabilities/:id takes a patch. Send only the fields that change:
curl -s -X POST https://api.zanora.dev/v1/capabilities/cap_d2383f37… -H "x-api-key: $ZANORA_API_KEY" \
-H 'content-type: application/json' -d '{"priceMinor":"80","tags":["invoices","receipts"]}'| You can change | Effect |
|---|---|
priceMinor, currency | takes effect from the next price quote. Buyers always pay the price in the quote Zanora signs at call time, so repricing is safe at any moment |
name, description, category, tags | updated in discovery. Changing the text discovery searches re-indexes the capability |
schema | publishes a new version, because the version hash covers the schema |
latencyP50Ms | your advertised median latency, used in ranking |
In the console, each row in Seller → Capabilities has an Edit form that sends only what you changed.
With @zanora/middleware-mcp, you don't call this route. Change your source and restart, and sell() reconciles the listing.
What can't change
The address, protocol and tool name can't be edited. A buyer's saved capability id has to keep pointing at the same thing, so moving any of them is a new capability:
- Publish the new capability.
- Deprecate the old one.
A capability that isn't active refuses edits.
Withdraw a capability
curl -s -X POST https://api.zanora.dev/v1/capabilities/cap_…/deprecate -H "x-api-key: $ZANORA_API_KEY"It disappears from discovery straight away. Existing references still resolve, so a buyer's saved id gets a clear answer rather than a 404.
Ranking well in discovery
| Signal | What you control |
|---|---|
| Verification | ask for it. Unverified sellers don't appear at all |
| Relevance | write description and tags in the words a buyer would search for: "extract text from invoices", not "DocuParse v3" |
| Price | cheaper ranks higher within a buyer's price filter |
| Latency | an honest latencyP50Ms. Buyers can filter on maxLatencyMs |
| Reputation | ratings from buyers who hold a receipt. Serve well, and return isError or an error status rather than a bad answer, since a failed call is refunded. Use a 4xx for a bad request, so it isn't counted as your failure |
| A schema | publish one. Agents read it before paying, and fewer bad requests means fewer failed calls |