Developers / Providers
Sell to
software
Agents do not sign up, read pricing pages or open support tickets. They need your API described precisely and priced in a way a program can act on. Tollex does that translation.
- 01
Describe what you sell
Send an OpenAPI 3 document or a manifest. Each operation becomes a capability with a strict input schema. External references, cookie parameters and credential headers are left out, and anything that cannot be imported safely is reported with a reason.
- 02
Set a price per call
Put x-tollex-price on each operation, in atomic USDG, or give the importer a default. An operation without a price is skipped. Agents are only charged when your endpoint answers successfully.
- 03
Keep your credentials
The manifest names a secret reference such as env:ACME_API_KEY. The operator holds the value and resolves it per call. It never appears in a schema, catalogue, receipt, log or error message, and agents cannot send credential headers of their own.
- 04
Let agents find you
Your capabilities appear in resolve plans, the catalogue, the OpenAPI document, the A2A agent card, the MCP tool list and the Bazaar metadata on each payment challenge.
- 05
Get paid and get evidence
Agents pay the Tollex deployment in USDG with x402; the deployment calls your API with your credentials. Every paid call produces a signed receipt binding the request, the price and the response. Settling between an operator and its providers is agreed between them; Tollex does not split payments on chain today.
- 06
Be measured on facts
There is no health endpoint to build. Tollex observes availability, success rate, latency, settlement reliability and receipt coverage from real calls and reports each one on its own, without folding them into a single score or star rating.
paths:
/spot/{pair}:
get:
operationId: spotPrice
summary: Latest spot price for a trading pair
x-tollex-price: "2000" # atomic USDG per successful call
parameters:
- { name: pair, in: path, required: true,
schema: { type: string, pattern: "^[A-Z]{2,6}-[A-Z]{2,6}$" } }
security: [{ apiKey: [] }]const manifest: ProviderManifestInput = {
id: "acme.marketdata",
name: "Acme market data",
baseUrl: "https://api.acme-data.example/v2",
network: NETWORK,
asset: { address: USDG_ADDRESS, symbol: "USDG" },
source: "provider manifest v3, reviewed 2026-10-02",
// A reference, never the key itself. The operator resolves it at call time.
auth: [{ kind: "API_KEY_HEADER", name: "key", param: "X-Api-Key", secretRef: "env:ACME_API_KEY" }],
endpoints: [
{
id: "acme_spot_price",
name: "Spot price",
description: "Latest spot price for a trading pair, with the exchange timestamp.",
method: "GET",
path: "/spot/{pair}",
pathParams: ["pair"],
inputSchema: {
type: "object",
properties: { pair: { type: "string", pattern: "^[A-Z]{2,6}-[A-Z]{2,6}$" } },
required: ["pair"],
additionalProperties: false,
},
price: 2_000n, // atomic USDG per successful call (0.002 USDG)
tags: ["market", "price", "spot"],
category: "market",
},
],
};
const provider = new ManifestToolProvider(manifest, { secrets: new DefaultSecretResolver() });The full rules for imports, authentication kinds, outbound call limits and reputation are in the provider documentation.