{"id":34814581,"url":"https://github.com/swader/x402facilitators","last_synced_at":"2026-05-22T08:42:17.428Z","repository":{"id":322985518,"uuid":"1091662971","full_name":"Swader/x402facilitators","owner":"Swader","description":"A public list of x402 facilitators","archived":false,"fork":false,"pushed_at":"2025-11-07T13:05:26.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-07T13:13:36.334Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Swader.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-07T10:36:18.000Z","updated_at":"2025-11-07T13:03:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Swader/x402facilitators","commit_stats":null,"previous_names":["swader/x402facilitators"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Swader/x402facilitators","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swader%2Fx402facilitators","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swader%2Fx402facilitators/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swader%2Fx402facilitators/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swader%2Fx402facilitators/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Swader","download_url":"https://codeload.github.com/Swader/x402facilitators/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swader%2Fx402facilitators/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28030190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-25T13:01:58.194Z","updated_at":"2025-12-25T13:02:11.496Z","avatar_url":"https://github.com/Swader.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# swader/x402facilitators\n\nThe `@swader/x402facilitators` package offers a unified, drop-in configuration\nfor all x402 facilitators\n\n## 🌐 Live Website\n\nView all facilitators in a mobile-friendly interface at\n[facilitators.x402.watch](https://facilitators.x402.watch) (or build your own\nlocally!)\n\n### Build \u0026 Serve the Website Locally\n\nThis project includes a static website generator built with Bun:\n\n```bash\n# Quick start - build and serve in one command\n./serve.sh\n\n# Or manually:\nbun run build:website\ncd dist \u0026\u0026 npx http-server -p 8080\n# Open http://localhost:8080 in your browser\n```\n\n## Installation\n\n```bash\nbun add @swader/x402facilitators\n# or\nnpm install @swader/x402facilitators\n# or\nyarn add @swader/x402facilitators\n```\n\n## Quick Start\n\n### Minimal Example\n\n```typescript\nimport { coinbase, thirdweb } from '@swader/x402facilitators';\n\npaymentMiddleware(\n  address,\n  resources,\n  coinbase // easily interchange any facilitator\n);\n\npaymentMiddleware(\n  address,\n  resources,\n  thirdweb // easily interchange any facilitator\n);\n```\n\n## Auto Facilitator\n\nThe `auto` facilitator is a proxy that load-balances between other facilitators\nto guarantee uptime. Simply import and use it directly - no configuration\nrequired:\n\n```typescript\nimport { auto } from '@swader/x402facilitators';\n\npaymentMiddleware(address, resources, auto);\n```\n\n## Resource Discovery\n\nSome facilitators support **discovery** - the ability to list all x402-protected\nresources they're facilitating.\n\nThis is useful for building agents that search for tools.\n\n### Discovery API\n\n```typescript\nimport { coinbaseDiscovery, kamiyoDiscovery, listAllFacilitatorResources } from '@swader/x402facilitators';\n\n// List all resources from a facilitator\nconst resources = await listAllFacilitatorResources(coinbaseDiscovery);\n\n// Or from KAMIYO (multi-chain)\nconst kamiyoResources = await listAllFacilitatorResources(kamiyoDiscovery);\n```\n\n### Facilitators Supporting Discovery\n\nThe following facilitators currently support resource discovery:\n\n- **Coinbase** - Enterprise-grade facilitator with SDK\n- **AurraCloud** - Infrastructure-focused facilitator\n- **thirdweb** - Web3 development platform\n- **PayAI** - AI-payment infrastructure\n- **Ultravioleta DAO** - Community-driven multichain facilitator\n- **KAMIYO** - Multi-chain AI facilitator\n- **Questflow** - AI workflow automation platform\n\n### Enumerate All Discoverable Facilitators\n\nThe package also exports a list of all facilitators that support discovery:\n\n```typescript\nimport {\n  discoverableFacilitators,\n  listAllFacilitatorResources,\n} from '@swader/x402facilitators';\n\nawait Promise.all(\n  discoverableFacilitators.map(facilitator =\u003e\n    listAllFacilitatorResources(facilitator)\n  )\n);\n```\n\n## Available Facilitators\n\nThis package includes pre-configured integrations for the following X402 facilitators:\n\n| Facilitator    | Networks      | Discovery | Setup Required                 |\n| -------------- | ------------- | --------- | ------------------------------ |\n| **Auto**       | BASE          | No        | No                             |\n| **Coinbase**   | BASE, SOLANA  | ✅ Yes    | Yes - Requires CDP API Creds   |\n| **AurraCloud** | BASE          | ✅ Yes    | Yes - API key                  |\n| **thirdweb**   | BASE, POLYGON | ✅ Yes    | Yes - Secret key               |\n| **PayAI**      | BASE, SOLANA  | ✅ Yes    | No                             |\n| **Daydreams**  | BASE, SOLANA  | No        | No                             |\n| **X402rs**     | BASE, POLYGON | No        | No                             |\n| **Polygon**    | POLYGON       | No        | No                             |\n| **Corbits**    | SOLANA        | No        | No                             |\n| **Dexter**     | SOLANA        | No        | No                             |\n| **Mogami**     | BASE          | No        | No                             |\n| **OpenX402**   | BASE, SOLANA  | No        | No                             |\n| **Questflow**  | BASE          | ✅ Yes    | Yes - API key                  |\n| **xEcho**      | BASE          | No        | No                             |\n| **CodeNut**    | BASE          | No        | No                             |\n| **Ultravioleta DAO** | BASE, SOLANA | ✅ Yes    | No                             |\n| **Virtuals**   | BASE          | No        | No                             |\n| **402104**     | BASE          | No        | No                             |\n| **KAMIYO**     | BASE, POLYGON, SOLANA | ✅ Yes    | No                             |\n| **Heurist**    | BASE          | No        | No                             |\n\n### Import Individual Facilitators\n\n```typescript\n// Simple facilitators (no setup)\nimport {\n  auto,\n  coinbase,\n  payai,\n  daydreams,\n  x402rs,\n  polygon,\n  corbits,\n  dexter,\n  mogami,\n  openx402,\n  xecho,\n  codenut,\n  ultravioletadao,\n  virtuals,\n  f402104,\n  kamiyo,\n  heurist\n} from '@swader/x402facilitators';\n\n// Facilitators requiring setup\nimport { aurracloud, thirdweb, questflow } from '@swader/x402facilitators';\n\naurracloud({\n  apiKey: process.env.AURRACLOUD_API_KEY,\n});\n\nquestflow({\n  apiKey: process.env.QUESTFLOW_API_KEY,\n});\n\nthirdweb({\n  secretKey: process.env.THIRDWEB_SECRET_KEY,\n});\n```\n\n### Access Facilitator Metadata\n\n```typescript\nimport { coinbaseFacilitator, payaiFacilitator } from '@swader/x402facilitators';\n\nconsole.log(coinbaseFacilitator);\n// {\n//   id: 'coinbase',\n//   metadata: {\n//     name: 'Coinbase',\n//     image: 'https://x402scan.com/coinbase.png',\n//     docsUrl: 'https://docs.cdp.coinbase.com/x402/welcome',\n//     color: '#2563EB'\n//   },\n//   config: { ... },\n//   addresses: { base: [...], solana: [...] },\n//   discoveryConfig: { ... }\n// }\n```\n\n## Types\n\n### `Facilitator\u003cProps\u003e`\n\nRepresents a complete facilitator with configuration and metadata:\n\n```typescript\ninterface Facilitator\u003cProps = void\u003e {\n  id: string; // Unique identifier\n  metadata: FacilitatorMetadata; // Display info (name, image, docs)\n  config: FacilitatorConfig | FacilitatorConfigConstructor\u003cProps\u003e;\n  addresses: Partial\u003cRecord\u003cNetwork, FacilitatorAddress[]\u003e\u003e;\n  discoveryConfig?: FacilitatorConfig; // For resource discovery\n}\n```\n\n### `FacilitatorConfig`\n\nConfiguration passed to X402 middleware for payment verification:\n\n```typescript\n// From 'x402/types'\ntype FacilitatorConfig = {\n  url: string; // Facilitator API endpoint\n};\n```\n\n### `FacilitatorConfigConstructor\u003cProps\u003e`\n\nFor facilitators requiring initialization parameters:\n\n```typescript\ntype FacilitatorConfigConstructor\u003cProps = void\u003e = (\n  requirements: Props\n) =\u003e FacilitatorConfig;\n```\n\n**Example - Simple facilitator (no setup required):**\n\n```typescript\nimport { payai } from '@swader/x402facilitators';\n\n// Use directly - just a URL configuration\npaymentMiddleware(address, resources, payai);\n```\n\n**Example - Facilitator with required props:**\n\n```typescript\nimport { aurracloud } from '@swader/x402facilitators';\n\n// Must call with required props first\npaymentMiddleware(\n  address,\n  resources,\n  aurracloud({ apiKey: process.env.AURRACLOUD_API_KEY })\n);\n```\n\n### `FacilitatorMetadata`\n\nDisplay information for UIs:\n\n```typescript\ninterface FacilitatorMetadata {\n  name: string; // Display name\n  image: string; // Logo URL\n  docsUrl: string; // Documentation link\n  color: string; // Brand color\n}\n```\n\n### `Network`\n\nSupported blockchain networks:\n\n```typescript\nenum Network {\n  BASE = 'base',\n  POLYGON = 'polygon',\n  SOLANA = 'solana',\n}\n```\n\n## Development\n\nThis project is built with [Bun](https://bun.sh) for optimal performance and\ndeveloper experience.\n\n### Prerequisites\n\n- [Bun](https://bun.sh) \u003e= 1.0.0\n\n### Setup\n\n```bash\n# Install dependencies\nbun install\n\n# Type check\nbun run check:types\n\n# Lint code\nbun run lint\n\n# Build library\nbun run build:lib\n\n# Build website\nbun run build:website\n\n# Build everything (library + website)\nbun run build\n```\n\n### Adding a New Facilitator\n\n1. Create a new file in `src/facilitators/your-facilitator.ts`\n2. Export the config and facilitator object following the pattern:\n\n    ```typescript\n    import type { Facilitator, FacilitatorConfig } from '../types';\n\n    export const yourfacilitator: FacilitatorConfig = {\n      url: 'https://your-facilitator-url.com',\n    };\n\n    export const yourfacilitatorFacilitator = {\n      id: 'yourfacilitator',\n      metadata: {\n        name: 'Your Facilitator',\n        image: 'https://x402scan.com/your-logo.png',\n        docsUrl: 'https://docs.yourfacilitator.com',\n        color: '#000000',\n      },\n      config: yourfacilitator,\n      addresses: {\n        // Network addresses\n      },\n    } as const satisfies Facilitator;\n    ```\n\n3. Add exports to `src/facilitators/index.ts`\n4. Add to the list in `src/lists/all.ts`\n5. Rebuild: `bun run build`\n\nAfter the PR is merged and a new release is tagged, your facilitator will appear\non both the website and in the lib.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswader%2Fx402facilitators","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswader%2Fx402facilitators","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswader%2Fx402facilitators/lists"}