Skills
The community catalog of HTTP 402–gated APIs that pay and AI agents read from.
pay-skills is the registry behind pay skills search. It's a curated repository of provider definitions, each pointing at an x402- or MPP-gated endpoint, with the metadata an agent needs to understand pricing, authentication, and shape.
If you've ever wondered "where does pay skills search 'translate' get its answers?" — it's this repo, built and published to a CDN.
Layout
The source of truth is the providers/ directory:
providers/
quicknode/rpc/PAY.md ← native operator (2 levels)
paysponge/2captcha/PAY.md ← proxied gateway (3 levels)
merit-systems/stableenrich/enrichment/PAY.md
solana-foundation/google/translate/PAY.mdThe path is the provider's fully-qualified name (FQN): quicknode/rpc, paysponge/2captcha. Two levels for an operator running its own endpoint; three levels for a gateway operator proxying somebody else's API.
Each provider directory contains:
| File | Required | Purpose |
|---|---|---|
PAY.md | yes | Frontmatter + prose describing the provider. |
openapi.json | usually | Committed OpenAPI 3 or Google Discovery snapshot for the upstream API. |
A typical PAY.md frontmatter:
---
name: rpc
title: 'Quicknode'
description: 'Pay-per-request JSON-RPC endpoints for 140+ blockchain networks…'
use_case: 'Use for blockchain JSON-RPC, querying account or contract state…'
category: compute
service_url: https://x402.quicknode.com
openapi:
path: openapi.json
---The frontmatter is what the agent reads when deciding whether a provider matches a task. use_case is the most important field for discovery — it's prose-shaped guidance for an LLM.
Public registry entries must commit the OpenAPI document next to PAY.md and reference it with openapi.path (or inline it with openapi.content). openapi.url is not accepted for published providers.
How pay consumes it
pay-skills is the input repository. The CLI doesn't read it directly; it reads the built index from a CDN.
The lifecycle:
- A contributor edits
providers/<fqn>/PAY.mdand opens a PR. - GitHub Actions runs
pay catalog checkon the PR — frontmatter validation, live HTTP probes, Solana-payment verdicts. A bad PAY.md or a dead endpoint blocks the merge. - On merge to
main, the workflow runspay catalog build .and publishesdist/skills.jsontogs://pay-skills/v1/skills.jsonplus per-provider detail files. pay skills update(called explicitly or automatically) fetches the index from the CDN.pay skills searchqueries it.- When the user selects a provider, the agent fetches the per-provider detail file (
gs://pay-skills/v1/<fqn>.json) — that holds the OpenAPI document.
Within a few minutes of merge, the new provider is discoverable from any pay skills search worldwide.
Two artifacts to know about
skills.json
The built catalog index — generated, not hand-edited. Contains metadata for every provider: FQN, title, description, category, declared currencies, endpoint count, and the URL to the per-provider detail JSON. Published at gs://pay-skills/v1/skills.json. Don't commit changes here; commit changes to providers/ and let CI rebuild.
x402-solana-catalog.md
A human-readable inventory of every x402-on-Solana endpoint accepting USDC. Organized by category (analytics, social, enrichment, e-mail, voice, etc.). It's manually curated and serves as a reference document — useful for browsing, not used as a build input.
Add a provider
pay catalog scaffold acme/search https://api.acme.example/openapi.json --output-dir providersThis generates providers/acme/search/PAY.md from the upstream OpenAPI doc with TODO markers for the discovery-critical fields. Fill in category and use_case, make sure the OpenAPI snapshot is committed next to PAY.md, then validate locally:
pay catalog check providers/acme/search/PAY.mdBefore opening a PR, run the changed-provider check against the upstream branch:
pay catalog check . --changed-from origin/mainA merged PR auto-publishes. See Commands → catalog for the full reference.
Add a provider source
A team running its own catalog (not the official one) can publish their own skills.json and register it locally:
pay install your-org/your-repo
pay skills update
pay skills search "your search"pay install is shorthand for pay skills add — see Commands → other. Multiple sources stack; pay skills search queries all of them.
Browse the catalog
The canonical browser view is built into the pay.sh site at /services (the same data, surfaced on the web). For CLI-side discovery:
pay skills search "translate"
pay skills search "data" --category data
pay skills show google/bigquery jobs