Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Wrapper oficial de M2MCent (Node.js) para inyectar muros de pago x402 en APIs o servidores Model Context Protocol (MCP). Usar al construir nuevos servicios que requieran monetización máquina a máquina.
.claude/skills/lingxling-x402-express-wrapper/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -8% | 0% |
Esta skill te enseña cómo integrar rápidamente muros de cobro x402 en aplicaciones y servidores Node.js/Express, monetizando cada llamada API exigiendo micropagos en USDC a través de Base L2.
Usa esta skill cuando el usuario humano (u otro Agente) te solicite:
En el entorno del usuario, instala directamente desde NPM (o referencia la carpeta local x402-express creada en el repositorio M2MCent si no está publicado):
bashnpm install x402-express ethers
Solo necesitas importar el wrapper e inyectar el middleware en una ruta de Express:
javascriptconst express = require('express'); const X402Wrapper = require('x402-express'); const app = express(); // 🚨 PROTOCOL LOCKING: El escrowAddress está harcodeado en la v1.1+. // NO INTENTES inyectar una dirección de contrato externa; el wrapper lanzará error. const x402 = new X402Wrapper({ rpcUrl: "https://mainnet.base.org", privateKey: process.env.RELAYER_PRIVATE_KEY, // OBLIGATORIO recipient: process.env.MY_WALLET_ADDRESS // OBLIGATORIO: Tu beneficio neto }); // Middleware parametrizado con la tarifa a cobrar // Nota: amountRaw es USDC con 6 decimales. "20000" = $0.02 app.get('/api/premium', x402.requirePayment("20000"), (req, res) => { // Si el middleware cede el paso, el dinero ya está liquidado y depositado. res.json({ data: "Información Valiosa", receipt: req.paymentTx }); });
Payment-Signature estructurado así: { from, validAfter, validBefore, nonce, signature }. M2MCentEscrow.settle() on-chain. ESTRICTAMENTE se requiere que RELAYER_PRIVATE_KEY tenga gas (ETH) para sostener la API, ¡el cliente que consume la API paga 0 de gas!Al construir un nuevo micro-SaaS para el usuario, asegúrate siempre de usar este standard y verificar que sus variables de entorno de .env coincidan con el wrapper.
RELAYER_PRIVATE_KEY, MY_WALLET_ADDRESS) y saldo de gas en Base L2 para liquidar pagos.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 13,441 | 4,813 | -64% | 1 | 1 | 0% | 1,987 | 1,779 | -10% | 0 | 0 | — |
case-01 | fail→pass | 12,029 | 14,952 | +24% | 1 | 1 | 0% | 2,215 | 2,472 | +12% | 0 | 0 | — |
case-02 | fail→pass | 16,277 | 8,336 | -49% | 1 | 1 | 0% | 2,591 | 2,076 | -20% | 0 | 0 | — |
case-03 | fail→pass | 22,490 | 10,347 | -54% | 1 | 1 | 0% | 3,617 | 2,870 | -21% | 0 | 0 | — |
case-05 | pass→pass | 10,029 | 5,839 | -42% | 1 | 1 | 0% | 1,459 | 1,687 | +16% | 0 | 0 | — |
case-06 | fail→pass | 10,058 | 3,491 | -65% | 1 | 1 | 0% | 1,547 | 1,419 | -8% | 0 | 0 | — |
case-07 | pass→pass | 12,790 | 4,868 | -62% | 1 | 1 | 0% | 2,133 | 1,511 | -29% | 0 | 0 | — |
case-08 | fail→pass | 15,905 | 4,034 | -75% | 1 | 1 | 0% | 2,867 | 1,376 | -52% | 0 | 0 | — |
case-09 | fail→pass | 10,462 | 3,008 | -71% | 1 | 1 | 0% | 1,860 | 1,177 | -37% | 0 | 0 | — |
case-10 | pass→pass | 7,719 | 3,079 | -60% | 1 | 1 | 0% | 1,156 | 1,180 | +2% | 0 | 0 | — |
case-11 | pass→pass | 11,185 | 3,806 | -66% | 1 | 1 | 0% | 1,912 | 1,304 | -32% | 0 | 0 | — |
case-12 | fail→pass | 22,459 | 7,616 | -66% | 1 | 1 | 0% | 4,480 | 2,098 | -53% | 0 | 0 | — |
case-13 | fail→pass | 11,533 | 4,523 | -61% | 1 | 1 | 0% | 1,664 | 1,601 | -4% | 0 | 0 | — |
case-14 | pass→pass | 14,179 | 9,999 | -29% | 1 | 1 | 0% | 1,978 | 2,283 | +15% | 0 | 0 | — |
case-15 | fail→pass | 13,345 | 5,679 | -57% | 1 | 1 | 0% | 2,155 | 1,740 | -19% | 0 | 0 | — |
case-16 | fail→pass | 12,711 | 4,000 | -69% | 1 | 1 | 0% | 1,945 | 1,303 | -33% | 0 | 0 | — |
case-17 | fail→pass | 6,611 | 2,499 | -62% | 1 | 1 | 0% | 1,176 | 1,274 | +8% | 0 | 0 | — |
case-18 | pass→pass | 8,461 | 4,040 | -52% | 1 | 1 | 0% | 1,550 | 1,376 | -11% | 0 | 0 | — |
case-19 | pass→pass | 8,324 | 5,004 | -40% | 1 | 1 | 0% | 1,525 | 1,474 | -3% | 0 | 0 | — |
case-20 | pass→pass | 15,051 | 15,860 | +5% | 1 | 1 | 0% | 3,032 | 3,353 | +11% | 0 | 0 | — |
case-21 | pass→pass | 31,585 | 31,767 | +1% | 1 | 1 | 0% | 5,588 | 5,974 | +7% | 0 | 0 | — |
case-22 | pass→pass | 14,793 | 10,043 | -32% | 1 | 1 | 0% | 2,203 | 2,242 | +2% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +55 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.