Creator documentation

Publish a paid tool

Five steps from nothing to a paid call, and the one header you have to compare.

Sections

Five steps from nothing to a paid call. The only Nexus-specific code you write is one header comparison; everything else is the HTTP endpoint you would have written anyway.

The five steps#

  1. 1 Sign in with Google, GitHub or Apple and choose the creator role. There is no password and no sign-up form — the provider is the account.
  2. 2 Claim a handle. This is your namespace, like acme. One per account, and it is never released.
  3. 3 Stand up an endpoint behind HTTPS. Start from the reference endpoint — it is a single file with the whole contract already handled.
  4. 4 Publish a version with its price and endpoint. The response carries your nx_crt_ key, shown once.
  5. 5 Connect Stripe when you want to withdraw. Earnings accrue without it, so this can wait.

How a tool is named#

A tool is addressed by three parts and a version, which together make the name a developer puts in their client:

A tool nametext
acme/payments/charge        the handle, the MCP server, the tool
acme/payments/charge@v2     pinned to a specific version

A developer who does not pin a version gets the highest published one. That is why a handle is never released: a freed name could be claimed by someone else, who could publish a higher version and collect calls meant for you.

The publish request#

The account app has a form for this. The underlying request, if you prefer to script it:

POST /v1/creator/toolsbash
curl -s https://api.nexus402.dev/v1/creator/tools \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  --cookie "$YOUR_SESSION" \
  -d '{
    "handle": "acme",
    "mcp": "payments",
    "tool": "charge",
    "version": "v1",
    "price_micro": "50000",
    "endpoint": "https://mcp.acme.example/mcp",
    "description": "Charges a card and returns the receipt id.",
    "input_schema": { "type": "object", "properties": {} }
  }'
  • price_micro is integer micro-USD as a string. "50000" is five cents. Never a JSON number.
  • version is v followed by a number.
  • description and input_schema are what the marketplace shows. A tool with no description says so plainly on its card, which is pressure on the person who can fix it rather than a broken listing.