# Zero to Hundred marketplace

> Search live software, compare listings, and prepare owned drafts. Publishing stays on the website.

- name: io.github.zerotohundred-admin/marketplace
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.zerotohundred-admin%2Fmarketplace
- tools: https://api.protogrid.dev/v1/servers/io.github.zerotohundred-admin%2Fmarketplace/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "marketplace": {
      "type": "http",
      "url": "https://zerotohundred.ai/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 45
- drivers: +website +reachable +uptime-100% +updated-4d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,086 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 3 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 5,086 tokens to load them all
- tool set hash: 356b74dc1df4db60c720777178a90fbc
- tools last changed: 2026-10-19T02:35:28.715Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.zerotohundred-admin/marketplace.svg)](https://protogrid.dev/servers/io.github.zerotohundred-admin/marketplace)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `z2h_list_my_listings` changed (inputSchema)
- 2026-10-19 `z2h_create_draft_listing` changed (description, inputSchema)
  - before: Create an invisible draft and return editUrl and publishUrl. Price and source inclusion are Builder decisions. Set sourceCodeIncluded only after confirmation; omitted values default to false. Requires listings:write. Returns the draft identity and web edit/review links. Check z2h_list_my_listings before retrying, because creation is not idempotent. Source delivery, review and publishing continue in the web wizard.
  - after: Create an invisible draft and return editUrl and publishUrl. Price and source inclusion are Builder decisions. Set sourceCodeIncluded only after confirmation; omitted values default to false. Requires listings:write. Returns the draft identity and web edit/review links. Supply a stable idempotencyKey and reuse it on every retry. The same key returns the original draft without editing it. Without a key, check z2h_list_my_listings before retrying. Source delivery, review and publishing continue in the web wizard.
- 2026-10-17 `z2h_show_marketplace` changed (title, inputSchema, annotations)
- 2026-10-17 `z2h_compare_marketplace_listings` changed (title, description, inputSchema, annotations)
  - before: Refresh 2 to 4 public listing slugs from marketplace search for comparison. Returns current public descriptions, USD license prices, types and tech stacks. Unavailable software is omitted without disclosing its status. This tool cannot purchase software or access private source.
  - after: Compare a shortlist of public software from marketplace search. Returns current public descriptions, USD license prices, types and tech stacks. Unavailable software is omitted without disclosing its status. This tool cannot purchase software or access private source.
- 2026-10-17 `z2h_confirm_source_upload` changed (annotations)
- 2026-10-17 `z2h_request_source_upload` changed (description, annotations)
  - before: For an owned draft, get a short-lived signed archive URL. Ask the Builder to explicitly accept this exact statement: "I own or have the rights to sell the codebase I am about to upload." Pass ownershipAccepted=true and ownershipVersion=2026-09-27 only after they accept. PUT up to 100 MB to signedUrl, then call z2h_confirm_source_upload. This does not publish.
  - after: For an owned draft, get a short-lived signed archive URL. Ask the Builder to explicitly accept this exact statement: "I own or have the rights to sell the codebase I am about to upload." Pass ownershipAccepted=true and ownershipVersion=2026-09-27 only after they accept. Returns signedUrl for the archive PUT, objectKey for confirmation, and contentType for the upload header. Keep signedUrl private. PUT up to 100 MB to signedUrl, then call z2h_confirm_source_upload. This does not publish.
- 2026-10-17 `z2h_update_draft_listing` changed (inputSchema, annotations)
- 2026-10-17 `z2h_get_listing` changed (inputSchema, annotations)
- 2026-10-17 `z2h_list_my_listings` changed (inputSchema, annotations)
- 2026-10-17 `z2h_create_draft_listing` changed (inputSchema, annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.zerotohundred-admin%2Fmarketplace/changes

## Remotes

- https://zerotohundred.ai/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `z2h_compare_marketplace_listings`: Compare a shortlist of public software from marketplace search. Returns current public descriptions, USD license prices, types and tech stacks. Unavailable software is omitted without disclosing its status. This tool cannot purchase software or access private source.
- `z2h_confirm_source_upload`: After the signed PUT succeeds, verify and attach the archive to the owned draft. Confirm that the Builder accepted "I own or have the rights to sell the codebase I am about to upload."; pass ownershipAccepted=true and ownershipVersion=2026-09-27. The server records the accepted wording with the source change. Final review and publishing stay in the web wizard.
- `z2h_create_draft_listing`: Create an invisible draft and return editUrl and publishUrl. Price and source inclusion are Builder decisions. Set sourceCodeIncluded only after confirmation; omitted values default to false. Requires listings:write. Returns the draft identity and web edit/review links. Supply a stable idempotencyKey and reuse it on every retry. The same key returns the original draft without editing it. Without a key, check z2h_list_my_listings before retrying. Source delivery, review and publishing continue in the web wizard.
- `z2h_get_listing`: Read one owned listing before editing it. Requires listings:read. Use a slug from z2h_list_my_listings. Returns descriptions, pricing, software attributes, source attachment state and web edit links. Missing listings and listings owned by someone else both return not found. This does not download source code.
- `z2h_list_my_listings`: Find the authenticated Builder's drafts and live listings before creating another draft. Requires listings:read. Returns items with slugs, publication state, USD prices, edit links, and nextCursor. Pass nextCursor to continue paging; null ends the list. An invalid or expired token requires sign-in again.
- `z2h_request_source_upload`: For an owned draft, get a short-lived signed archive URL. Ask the Builder to explicitly accept this exact statement: "I own or have the rights to sell the codebase I am about to upload." Pass ownershipAccepted=true and ownershipVersion=2026-09-27 only after they accept. Returns signedUrl for the archive PUT, objectKey for confirmation, and contentType for the upload header. Keep signedUrl private. PUT up to 100 MB to signedUrl, then call z2h_confirm_source_upload. This does not publish.
- `z2h_search_marketplace`: Find live software by keyword before building from scratch. Public, no sign-in needed. Returns descriptions, USD license prices, tech stacks and listing links. Example: {"search": "invoice", "limit": 5}. Empty search browses recent software. When hasMore is true without nextCursor, narrow the search. Matching is lexical. Errors set isError; retry a rate limit later. Use z2h_compare_marketplace_listings for a shortlist or z2h_show_marketplace for cards. A result does not guarantee suitability or purchase availability.
- `z2h_show_marketplace`: Show public software cards and an interactive comparison panel. First search with z2h_search_marketplace, then pass the public slugs to display, and the search text you used as `search` so the panel shows what the cards are for. Without slugs, shows the newest live software. Prices and availability are refreshed on the server. Listing links open the Zero to Hundred website.
- `z2h_update_draft_listing`: Update an owned draft. Omitted fields stay unchanged; nullable fields accept null to clear them. Live listings cannot be edited through this tool. Requires listings:write. Returns the draft identity and web edit/review links. On conflict, read the listing again before retrying.
