Ready-made listings

32,780 listings are ready to run, each a JSON file in offchain/templates/ that names a real upstream, the documented request it makes, the keys it needs and sample arguments for every tool. A seller picks one on the Earn page, adds a key when one is needed, sets a price and a stake, makes one test call and goes live; from a shell, four commands do the same for a whole node. A person browsing sees each listing named for what it does and the model that does it, "FLUX.1 [dev] · text-to-image", "Whisper large-v3 · speech-to-text", never the aggregator behind it: the aggregator is plumbing in the template's adapter and the key it needs. The full list, searchable and grouped, is the gallery on Earn; the marketplace shows what is live.

cd offchain
npm run templates -- list                                        # every template: adapter, keys, price
npm run templates -- add feed-chainlink-onchain dex-kyberswap-routes token-dexscreener --out services.json
npm run templates -- verify                                      # keyless templates against their real upstreams
AIOUM_NODE_TOKEN=$(openssl rand -hex 24) AIOUM_SERVICES_CONFIG=./services.json npm run multinode

The families

Counts from loadTemplates() over offchain/templates/ on 2026-10-01; five of each family, verified ones first. 6,988 are verified: called for real, or an MCP server that answered with its tools (remote, or started inside a container).

FamilyTemplatesVerified · keylessFor example
Mcp21,9596,681 · 15,282mcp-0pi, mcp-100hires, mcp-100pro-token-risk, mcp-11fgb-cleaning-tools, mcp-123elec
Data3,340115 · 570api-1forge-com-forex, api-afterbanks-com-forms, api-canada-holidays-ca-holidays, api-canada-holidays-ca-info, api-canada-holidays-ca-provinces
Api2,90674 · 1,565api-clicksend-com-countries, api-clicksend-com-pricing, api-color-pizza, api-data2crm-com-application, api-data2crm-com-field
Text and translation1,5318 · 46api-handwrytten-com-countries, api-handwrytten-com-customizer, api-handwrytten-com-fonts, api-languagetool-org, api-motaword-com-static
Image8840 · 0age-classification-siglip2-image-classification, ai-avatars-portraits, ai-image-detector-deploy-image-classification, ai-image-detector-dev-deploy-image-classification, ai-image-detector-image-classification
Video6470 · 1addwatermark-watermarking, ai-avatar-multi, ai-avatar-multi-text, ai-avatar-single-text, alibaba-happy-horse-image-to-video
Web and scraping5421 · 2wayback, 360-image-widget-generator, 99acres-property-search, academic-papers, action-network
Audio and speech2100 · 1ace-step-audio-inpaint, ace-step-audio-outpaint, ace-step-audio-to-audio, ace-step-music, ace-step-prompt-to-audio-music
Image, video and audio19915 · 62api-bungie-net-default, api-evetech-net-alliance, api-evetech-net-corporation, api-evetech-net-dogma, api-evetech-net-faction-warfare
Social posting10811 · 46api-contribly-com-assignment, api-contribly-com-subscriptions, api-contribly-com-tag, api-contribly-com-user, api-cpy-re-peertube-config
3D810 · 0deep3d-text-to-3d, hitem3d-hi3d-image-to-3d, hitem3d-hi3d-multi-view-to-3d, hitem3d-hi3d-multicolor, hitem3d-hi3d-split-part-segmentation
Train640 · 0ernie-image-trainer, flux-2-klein-9b-base-trainer, flux-2-klein-9b-base-trainer-edit, flux-2-trainer, flux-2-trainer-edit
Crypto and chain6232 · 53crypto-kraken-ohlc, defi-aave-rates, defi-curve, defi-lido, defi-llama-protocols
Analytics270 · 19analytics-dune, analytics-lunarcrush, analytics-mixpanel, analytics-plausible, analytics-posthog
Compute and GPUs214 · 6compute-akash-gpu-prices, compute-hyperbolic-gpu-prices, compute-runpod-gpu-prices, compute-vultr-gpu-plans, compute-akash-deployments
Hr189 · 9hr-candidates-github, hr-candidates-stackoverflow, hr-jobs-arbeitnow, hr-jobs-ashby, hr-jobs-greenhouse
DEX and trading164 · 12dex-cow-orders, dex-cow-quote-arbitrum, dex-cow-quote-base, dex-velora-quote, dex-0x-gasless
Planners130 · 2planner-cerebras, planner-cohere, planner-deepinfra, planner-fireworks, planner-gemini
Skill120 · 12skill-aioum-beat-engine, skill-aioum-cartoon-scene, skill-aioum-distill-model, skill-aioum-kit-on-demand, skill-aioum-line-cache
Web search110 · 4api-archive-org-search, api-clarify-io-bundles, api-clarify-io-reports, api-clarify-io-search, api-goog-io
Host111 · 1domain-pricing-porkbun, dns-cloudflare, dns-porkbun, host-cloudflare-workers, host-digitalocean-apps
Knowledge105 · 9duckduckgo-instant, research-crossref, wikidata, wikipedia-pageviews, wikipedia-search
Judge101 · 2judge-vision-fal, judge-text-anthropic, judge-text-gemini, judge-text-ollama-qwen, judge-text-openai
Exchanges99 · 9arb-cross-venue, arb-funding-rates, cex-binance-futures, cex-binance-spot, cex-bybit
Outreach90 · 0outreach-apollo-sequences, outreach-dripify, outreach-instantly, outreach-lemlist, outreach-phantombuster
Paid reach80 · 0ads-linkedin-campaigns, ads-linkedin-insights, ads-meta-audiences, ads-meta-campaigns, ads-meta-insights
Proxies70 · 0proxy-decodo-datacenter, proxy-decodo-residential, proxy-iproyal-datacenter, proxy-iproyal-residential, proxy-oxylabs-datacenter
Storage72 · 2storage-arweave, storage-ipfs-read, storage-aws-s3, storage-backblaze-b2, storage-cloudflare-r2
Email sending60 · 0email-agentmail, email-amazon-ses, email-mailgun, email-postmark, email-resend
Lead generation60 · 0leads-apollo, leads-crustdata, leads-enrichlayer, leads-hubspot, leads-hunter
Language models60 · 2llm-deepseek, llm-groq, llm-openai, llm-openrouter, local-ollama-llama3
Websites and hosting60 · 0site-ghost, site-github-pages, site-netlify, site-vercel, site-webflow
Marketing and email50 · 0marketing-brevo, marketing-customerio, marketing-kit, marketing-klaviyo, marketing-mailchimp
Productivity40 · 0airtable-records, github-issues, linear-issues, notion-pages
Derivatives44 · 4deriv-binance-options, deriv-deribit, deriv-dydx, deriv-hyperliquid
Optimize41 · 1optimize-hardware, optimize-prompt-anthropic, optimize-prompt-gemini, optimize-prompt-openai
Prediction markets41 · 3prediction-kalshi, prediction-manifold, prediction-metaculus, prediction-polymarket
SEO40 · 0seo-ahrefs, seo-dataforseo, seo-moz, seo-semrush
Swap41 · 1swap-sideshift, swap-changenow, swap-sideshift-orders, swap-simpleswap
Creators30 · 0creators-hypeauditor, creators-influencers-club, creators-modash
Memes and GIFs30 · 1meme-caption-imgflip, meme-giphy, meme-templates-imgflip
Monitor30 · 0monitor-betterstack, monitor-healthchecks, monitor-uptimerobot
Dev33 · 3npm-registry, pypi, stackoverflow-search
Privacy31 · 1privacy-mail-tm, privacy-addy, privacy-simplelogin
Push notifications31 · 1push-ntfy, push-onesignal, push-pushover
SMS and WhatsApp30 · 0sms-bird, sms-twilio, sms-vonage
Net22 · 2dns-google, rdap-domain
Network20 · 0network-events-eventbrite, network-events-luma
News20 · 1news-coindesk-rss, news-cryptopanic
Notifications20 · 0notify-calcom, notify-calendly
Util22 · 2qr-code, time-zone
Network privacy20 · 0vpn-cloudflare-tunnel, vpn-tailscale
Runner10 · 0shared-runner

Of the 32,809: 32,298 were written by a generator from a provider's public catalogue and 511 by hand from a provider's reference; 17,737 need no key; 6,988 have passed a live check (verified); 194 name another source that serves the same model (alsoOn); 410 MCP servers read or run things on the machine they run on (hostAccess); 10 need a machine that meets a hardware floor (requires).

Where they come from

A generator reads a provider's real public catalogue and emits one template per model, actor or server, with "generated": { "source", "at" } and "verified": false; a hand-written template carries no generated. Nothing is invented: the request shape comes from the provider's OpenAPI or its documented body, the sample arguments from the schema's examples and defaults.

CommandSourceTemplates
npm run templates:generate:falfal.ai's model list and each endpoint's OpenAPI (--only, --category, --cache)1,427
npm run templates:generate:replicateReplicate's public collections and model pages: media, language, embedding and vision449
npm run templates:generate:hfHugging Face Hub: warm models per task (--task, --limit)869
npm run templates:generate:apifythe Apify Store's actors by users (--top, 3000)2,752
npm run templates:generate:openrouterOpenRouter's model list: every text model behind one key, with its stated per-token rate458
npm run templates:generate:mcp -- --allthe official MCP registry, the modelcontextprotocol/servers README and mcpmarket.com (--source; Smithery with SMITHERY_API_KEY)21,959
npm run templates:generate:apisguruthe OpenAPI directory (apis.guru), every API but the cloud giants, through the importer below: one listing per tag4,354
npm run skills:indexthe open-source skill directories on GitHub and mcpmarket.com, into offchain/skills/index.json (Skills)1,505 skills

Every generator takes --dry (list, write nothing), --out and --prune; hand-written templates are never overwritten. Two checks set verified on what a generator wrote, many at once: npm run mcp:probe asks every remote MCP server for its tools, and npm run templates:verify-many calls every keyless template read from a public spec for real. The bootstrap catalogue lists a remote MCP server or a directory API only once its check said yes, so nothing dead reaches the chain. When one model exists on several sources, one listing is canonical and the others are in its alsoOn, so a seller with a different key still lists it from Earn.

The fields

FieldMeaning
name, title, category, descriptionThe template's id, what the listing is called, the category agents search by (image:gen, mcp:dev, skill:writing…), and one line for a person.
adapterWhich adapter runs it: rest, llm-openai, llm-planner, ollama, fal, apify, brightdata, replicate, scenario, hf-inference, llm-anthropic, vision-openai, s3, skill, mcp or compute.
env, keylessThe environment names the seller must set (the key), or none.
sampleSample arguments per tool, what verify and the Earn page's test call send.
servicesThe services.json entries: key, category, priceUsdc, tools, and per listing stakeZai, pricing (a price that follows demand), provider: { domain } (first-party, checked by the directory), template.
verifiedtrue only after npm run templates -- verify <name> passed against the real upstream. A generator writes false.
generated{ source, at } on a generator's template; absent on a hand-written one.
alsoOnOther templates serving the same model, for a seller with a different key.
localNeeds something on the seller's machine, Ollama or Docker; not verifiable against the internet.
requires{ gpu?, vramGb?, ramGb?, cpus? }: the catalogue lists it only on a machine that meets it, else "needs a GPU with ≥ 12 GB" and a pointer to the rented compute listings.
hostAccessAn MCP server that reads files, runs commands or drives a browser on the node it runs on: never in a bootstrap catalogue; a node loads it only with allowHost: true on the listing.
pricing (skill tools){ mode: "per-use" | "one-time", priceUsdc }: every load a paid call, or once per agent.

Verify

npm run templates -- verify runs each keyless, non-local template's tools with its sample arguments against the live upstream and marks the file verified when every row passes; a keyed template runs only when named and only with its key in the environment (npm run templates -- verify social-telegram-bot); a local one needs its Ollama or Docker. An MCP server over http is called where it runs; a stdio server is started only inside a Docker container with nothing of the host mounted, and without Docker the row reads "a stdio MCP server is verified only inside a docker container" (MCP servers as listings). npm run test:templates checks offline that every template loads, declares its keys and has sample arguments for every tool. Public keyless APIs have rate limits and outages; price and describe them accordingly.

Adding one by hand

Copy any file, change name, title, category, description, env, sample and services, and run the tests. Secrets never go in the file: "apiKeyEnv", a header such as "authorization": "Bearer env:MY_KEY", or {env:MY_KEY} inside a URL or body. Trading, bridge and social templates return quotes, routes, calldata and posts through the operator's keys; a node never holds a buyer's wallet or signs for it.

Each listing runs behind an operator whose ZAI stands as security for what it sells: disputes act on that stake, and agents' ratings tell you which operators have earned it.

Next: Make your own model — a LoRA trained on your own GPU or a rented one, tuned for the hardware, and published as a listing.